之前没有,还有一些遗留的问题,现在处理一下。运算符&在javascript中的作用。///9is000000000000000000000000001001001001varexpr1=9;//////5is000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001Varresult=expr1expr1expr1expr1expr1&docprite.diute)/在,每个位对应计算,两种计算方式为1比1,即'and'。1.谈谈||(逻辑或)第一。从字面上理解就是只有前后都为false才返回false,否则返回true。alert(true||false);//truealert(false||true);//truealert(true||true);//truealert(false||false);//false然而,从深层次上讲,Butthere是另一个世界,试试下面的代码:alert(0||1);显然,我们知道前面的0表示false,后面的1表示true,那么上面的结果应该是true,fact返回的结果是1。再看下面的代码:alert(2||1);我们知道前2个为真,后1个也为真,那么返回的结果是什么呢?测试结果为2,继续阅读:alert('a'||1);同样,前面的'a'为真,后面的1也为真;测试结果是'a',下面是alert(''||1);由上可知,前面的''为假,后面的1为真,返回结果为1。看下面的alert('a'||0);前面'a'为真,后面0为假,返回结果为'a',继续后面的alert('a'||'b');前面'a'为真,后面'b'为假,返回结果为'a',下面继续alert(''||0);前面的''为false,后面的0也为false,返回结果为0alert(0||'');前面的0为假,后面的''为假,返回结果为'',也就是说只要前面的“||”为false,不管后面有没有“||”是真还是假,会返回到“||”后面价值。只要“||”之前为真,不管“||”是否为true或false,返回"||"之前的值。2、说说&&(逻辑与),字面意思就是只有前后都为真才返回真,否则返回假。alert(true&&false);//falsealert(true&&true);//truealert(false&&false);//falsealert(false&&true);//false那么根据上面的经验,我们看一下前后的“&&”,不仅仅是布尔条件。警报(''&&1);结果是在"&&"为假前返回'','',为真后返回1。警报(''&&0);结是返回'',"&&"前面的''是假的,后面的0也是假的。警报('a'&&1);结果是返回1,''a之前的“&&”为真,后面的1也为真。警报('a'&&0);结果是返回0,''a前面的“&&”为真,0后面为假。警报('a'&&'');结果是返回'',''a在"&&"之前为真,''后面为假。警报(0&&'a');结果是返回0,''0之前的“&&”为假,后面的'a'为真。警报(0&&'');结果是返回0,''0前的"&&"为false,后面的''也为false。这意味着只要“&&”之前为false,无论“&&”后面是true还是false,结果都会返回“&&”之前的值;只要“&&”前面是true,不管“&&”后面是true还是false,结果都会返回“&&”后面的值;让我们总结一下:1.只要“||”为假,无论是否为“||”后面跟true或false,结果会返回“||”后面的值。2.只要“||”之前为真,不管“||”是否为真或假,结果将返回“||”之前的值。3、只要“&&”之前为false,无论“&&”后面跟的是true还是false,结果都会返回“&&”之前的值;4、只要“&&”前面是true,不管“&&”后面是true还是false,结果都会返回“&&”后面的值;从以上两个测试中,逻辑运算符“||”而“&&”都遵循短路原则,只要确认符号前面的真假,就可以确定返回值。需要注意的是,“&&”的优先级高于“||”。以下测试:alert(1||'a'&&2);返回1,根据反证法则,我们假设“||”的优先级不低于“&&”(这里用“不低于”的原因是为了同时证明同级)。根据我们上面得出的结论(1),(1||'a')会返回前面的值1,而(1&&2)根据结论(4)应该返回后面的值2。这显然是错误的,可以看出“&&”的优先级高于“||”。【本文为专栏作家“谢军”原创稿件。转载可通过作者微信取得联系公众号(jingfeng18)】点此查看该作者更多好文
