逻辑与 &&
1、两边条件都为true
时,结果才为true
;
2、如果有一个为false
,结果就为false
;
3、先对左边的操作式求值。如果为 **true
** ,则对右边的操作数求值并返回;如果为**false**
,就不再判断后面的条件,直接返回左边。
如果左值是true,那么整个表达式的值就依赖于右边的值了。如果右值是true,那么整个表达式就是真的,如果右值是false,那么整个表达式就是假的。
重点用途
相当于 **if
的用途:
&&
具有“短路”**的功能。下面两行代码的效果是一致的:
if (a == b) stop();
(a == b) && stop(); // 如果左边为true,则执行右边
示例:
this.canSeen(imglist[i]) && this.loadImage(imglist[i], i);
总结:当数值参与逻辑与运算时,结果为true,那么会返回的会是第二个为真的值;如果结果为false,返回的会是第一个为假的值。
逻辑或 ||
1、只要有一个条件为true
时,结果就为true
;
2、当两个条件都为false
时,结果才为false
;
3、当一个条件为true
时,后面的条件不再判断。
总结:当数值参与逻辑或运算时,结果为true
,会返回第一个为真的值;如果结果为false
,会返回第二个为假的值。
多个逻辑或
顺序看下来即可。如
console.log(0 || 0 || 5)
// 5
重点用途
做一次筛选,如果变量的值不是**false
, null
, NaN
, 0
, undefined
或''
,则传入该变量。**
示例:
function Foo(value){
value = value || 'yonni';
return value;
}
Foo() // 'yonni' (传递默认参数)
Foo('hi') // 'hi'