从这个问题来看:“var FOO = FOO || {}”(将变量或空对象分配给该变量)在 Javascript 中意味着什么? https://stackoverflow.com/questions/6439579/what-does-var-foo-foo-assign-a-variable-or-an-empty-object-to-that-va
我了解到var FOO = FOO || {}
本质上意味着“如果 FOO 存在,则保持不变,否则使其成为空对象”。
But how?
这就是我解析此语法的方式:
var FOO = (FOO || {})
So: If FOO
存在 AND 计算结果为布尔值 True,然后(FOO || {})
将返回 True,所以最终FOO
将被完全覆盖,并从现在起保留 True 的布尔值。
Else (FOO || {})
将返回任何布尔值{}
评估为.由于是一个空对象,{}
is,总是评估为 True...
那么在任何情况下(FOO || {})
应该评估为 True,所以...
在任何可能的情况下,评估后var FOO = FOO || {}
, FOO 应该保存 True 的简单布尔值,无论它之前保存的是什么。本质上,据我了解,var FOO = FOO || {}
应该等于var FOO = True
.
我的错误在哪里?
如果 FOO 存在并且计算结果为布尔值 True,则 (FOO || {}) 将返回 True
事情不是这样的||
运算符在 JS 中工作。
正确的解释是:
如果左侧是真值,则按左侧计算(即FOO
),否则计算为右侧(即{}
).
var zero = 0;
var one = 1;
var two = 2;
console.log(zero || two);
console.log(one || two);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)