对不起,如果这是一个愚蠢的问题,但为什么在这种情况下变量 x 包含 null :
var x = 2 && 1 && null && 0 && undefined;
console.log(x);
在本单元中:
var x = 2 && 1;
console.log(x);
在这 2 中:
var x = 1 && 2;
console.log(x);
这里3:
console.log(null || 2 && 3 || 4);
对不起,如果这是一个愚蠢的问题,但为什么在这种情况下变量 x 包含 null :
var x = 2 && 1 && null && 0 && undefined;
console.log(x);
在本单元中:
var x = 2 && 1;
console.log(x);
在这 2 中:
var x = 1 && 2;
console.log(x);
这里3:
console.log(null || 2 && 3 || 4);
我不擅长 js,但很可能这里的一切都与其他语言相同。逻辑运算符的执行方式是,如果从一个操作数知道结果,则不计算第二个操作数。
逻辑AND
&&如果在转换为 boolean 类型时产生,则返回第一个操作数false,并且不执行进一步的计算,也就是说,如果它返回转换为的内容,a() && b()它将不计算。否则,返回第二个操作数。b()afalse逻辑或
||- 相反,如果为真,则返回第一个操作数。&& 示例
2导致true1也但它
null会减少到false,所以我们不再计算任何东西。|| 示例
示例 c
||将返回 1,因为它是遇到的第一个“真”操作数。两个运算符的示例。
运算符优先级
&&高于||。所以表达式将被视为
null减少到false,所以我们得到将在括号中
3我们得到
3.如果第一个参数为真,则不会计算带括号的表达式:
关键是如果第一个值为真,那么它会分配第二个,但如果其中一个条件是
null,那么它会将它返回null给变量。我认为这个概念很清楚。如果一个
解析器首先选择什么是真的,也就是说,
3 === true所以他选择了它,如果是let x = 0 || 4,那么 x 将等于 4。