逻辑与 &&

1、两边条件都为true时,结果才为true
2、如果有一个为false,结果就为false
3、先对左边的操作式求值如果为 **true** ,则对右边的操作数求值并返回;如果为**false**,就不再判断后面的条件,直接返回左边。

如果左值是true,那么整个表达式的值就依赖于右边的值了。如果右值是true,那么整个表达式就是真的,如果右值是false,那么整个表达式就是假的。

重点用途

相当于 **if 的用途:
&& 具有“
短路”**的功能。下面两行代码的效果是一致的:

  1. if (a == b) stop();
  2. (a == b) && stop(); // 如果左边为true,则执行右边

示例:

  1. this.canSeen(imglist[i]) && this.loadImage(imglist[i], i);

总结:当数值参与逻辑与运算时,结果为true,那么会返回的会是第二个为真的值;如果结果为false,返回的会是第一个为假的值。

逻辑或 ||

1、只要有一个条件为true时,结果就为true
2、当两个条件都为false时,结果才为false
3、当一个条件为true时,后面的条件不再判断。
总结:当数值参与逻辑或运算时,结果为true,会返回第一个为真的值;如果结果为false,会返回第二个为假的值。

多个逻辑或

顺序看下来即可。如

  1. console.log(0 || 0 || 5)
  2. // 5

重点用途

做一次筛选,如果变量的值不是**false, null, NaN, 0, undefined'',则传入该变量。**

示例:

  1. function Foo(value){
  2. value = value || 'yonni';
  3. return value;
  4. }
  5. Foo() // 'yonni' (传递默认参数)
  6. Foo('hi') // 'hi'