在JavaScript中什么情况下可以/适合使用逻辑赋值?
- 论坛
- 在JavaScript中什么情况下可以/适合使用逻辑赋值?
13 浏览
在JavaScript中什么情况下可以/适合使用逻辑赋值?
以前我在JavaScript中使用过像b = a || []
这样的逻辑赋值,关于这个问题在Stack Overflow上有很多讨论。
举几个例子:
根据我所读的,b = a || []
是合法的代码。
然而,最近我注意到在一个情况下(检查另一个脚本设置的变量),这段代码并不像我预期的那样工作。
我以为这段代码会检查a
是否为假值,如果是的话,[]
会被赋值给b
。由于undefined
是假值,我期望这段代码在a
未定义的情况下能工作并将[]
赋值给b
。
但是这段代码会导致错误:
let b; b = a || []; console.log(b); a = ["1", "2", "3"]; b = a || []; console.log(b);
而这段代码却不会:
let b; b = typeof a == "undefined" ? [] : b; console.log(b); a = ["1", "2", "3"]; b = a || []; console.log(b);
为什么会导致错误,而错误提示说未捕获的引用错误:a未定义,这暗示了a
是undefined
呢?
什么时候可以使用逻辑赋值?只有在保证变量(a
)至少被声明的情况下吗?