最近看前端面试题看到这个题目,还不知道怎么回事,结果自己在控制台试了一下,加上看了网上别人的解释,这里记录说明如下:
1、先说说 || 的情况
看看以下几种情况分别得到的结果:
1、alert(0||1),得到的结果是1;
2、alert(0||"a"),得到的结果是a;
3、alert(1||2),得到的结果是1;
4、alert(1||0),得到的结果是1;
5、alert(''||0),得到的结果是0;
6、alert(''||1),得到的结果是1;
7、alert('a'||0),得到的结果是a;
8、alert('a'||1),得到的结果是a;
||(逻辑或)一般来说是在符号前后的数据都为false的情况下才得到false,其余的情况都是true。
总结上面的规律可以发现:||符号前的数据若为false,则不管后面的数据是什么,alert(a||b)得到的结果都是b,即符号后面的值;若前面的值为true,则不管后面的值是什么,alert(a||b)得到的值都是a,即符号前面的值。
2、再看&&的情况
还是刚刚的几个例子
看看以下几种情况分别得到的结果:
1、alert(0&&1),得到的结果是0;
2、alert(0&&"a"),得到的结果是0;
3、alert(1&&2),得到的结果是2;
4、alert(1&&0),得到的结果是0;
5、alert(''&&0),得到的结果是'';
6、alert(''&&1),得到的结果是'';
7、alert('a'&&0),得到的结果是0;
8、alert('a'&&1),得到的结果是1;
&&(逻辑与)一般来说是在符号前后的数据都为true的情况下才得到true,其余的
情况都是false。
总结上面的规律可以发现:&&符号前的数据若为false,则不管后面的数据是什么,
alert(a&&b)得到的结果都是a,即符号前面的值;若前面的值为true,则不管后面的值
是什么,alert(a&&b)得到的值都是b,即符号后面的值。
逻辑运算符,||和&&都是遵行短路原则,只要确定了符号前面的真假,既可确定返回值。
这里需要说明的是&&的优先级是高于||的。
新闻热点
疑难解答