【转载】JS中&&和||

114 阅读2分钟

转载自濒临倒闭的博客园。

C语系中的&&和||

C语系的&&和||有一个特点,无论你把表达式写的天花乱坠,都会返回一个布尔值。

1,&&

  两边条件都为true时,结果才为true;

  如果有一个为false,结果就为false;

  当第一个条件为false时,就不再判断后面的条件;

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

2,||

  只要有一个条件为true时,结果就为true;

  当两个条件都为false时,结果才为false;

  当一个条件为true时,后面的条件不再判断;

  注意:当数值参与逻辑或运算时,结果为true,会返回第一个为真的值;如果结果为false,会返回第二个为假的值;

JS中的&&和||

1,JS中的&&和||,当出现在条件判断语句中时,例如if,会遵守C语系规则。

2,JS中的&&和||,当初现在赋值语句中时,例如变量赋值、return结果等,会遵循以下规则:

  表达式a && 表达式b : 计算表达式a(也可以是函数)的运算结果, 如果为 True, 执行表达式b(或函数),并返回b的结果; 如果为 False,返回a的结果;

  表达式a || 表达式b : 计算表达式a(也可以是函数)的运算结果, 如果为 Fasle, 执行表达式b(或函数),并返回b的结果; 如果为 True,返回a的结果;

例1:
 let b, c, d;
 b = true || 0;//b=true;
 c = false || 0;//c=0;
 d = 1 || 0;//d=1;
例2:
//将数组中布尔值为false的成员转为0
 Array.from([1, , 2, , 3], (n) => n || 0)
// [1, 0, 2, 0, 3]