深入理解JS中&&和||

https://www.cnblogs.com/guanghe/p/11157201.html
写了这么多JS,才发现JS的语法既是属于C语系的,又与一般C语系的编程语言某些地方有很大区别,其中&&和||就是其中一例。

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:

1 let b, c, d;
2 b = true || 0;//b=true;
3 c = false || 0;//c=0;
4 d = 1 || 0;//d=1;
例2:

1 //将数组中布尔值为false的成员转为0
2 Array.from([1, , 2, , 3], (n) => n || 0)
3 // [1, 0, 2, 0, 3]

猜你喜欢

转载自blog.csdn.net/s8806479/article/details/104647635
今日推荐