var a = "";
if (a == ("" || undefined)) {
a = 1;
}
console.log(a);
我一直以为这里会打印输出 1,但实际上不是,我很奇怪,直到突发奇想试试 ("" || undefined)
看它返回了undefined
,很奇怪来着。
我一直以为,上面的条件判断是 a
分别与 ""
和 undefined
比较,只要有一个符合就进行赋值,但现在看来实际上不是的,这里 a
只与 undefined
比较,这我就奇怪了,难道是 ()
内先比较,然后返回一个 true
值继续和 a
比较?但是 ""
和 undefined
都应该对应 false
啊?
求大神们解惑,谢谢!
莫非你之前是学 C 语言的?
在 javascript 中,
||
的结果并不是 boolean 值,并不是true
或者false
。https://developer.mozilla.org...
当 expr1 为 false 时,直接返回 expr2。
根据优先级,首先执行
("" || undefined)
结果是undefined
,然后再执行a == undefined
结果是false
。你提到的:
这句话写出来应该是这样的: