【发布时间】:2017-07-03 12:43:01
【问题描述】:
我了解到var FOO = FOO || {} 本质上的意思是“如果 FOO 存在,则保持不变,否则将其设为空对象”。
但是怎么做呢?
这就是我解析这个语法的方式:
var FOO = (FOO || {})
所以:如果 FOO 存在且计算结果为布尔值 True,那么 (FOO || {}) 将返回 True,因此最终 FOO 将被完全覆盖,并且从现在开始将保持布尔值 True。
否则 (FOO || {}) 将返回到任何布尔值 {} 评估为。因为 {} 是一个空对象,总是评估为 True...
那么在任何情况下(FOO || {}) 都应该评估为 True,所以...
在任何可能的情况下,在评估 var FOO = FOO || {} 之后,FOO 应该保持微不足道的布尔值 True,而不管它之前持有什么。本质上,据我了解,var FOO = FOO || {} 应该等同于 var FOO = True。
我的错误在哪里?
【问题讨论】:
-
与其他语言不同,JavaScript 布尔表达式不一定返回布尔值。只需运行例如
console.log('foo' || 'bar')在控制台中。
标签: javascript