【发布时间】:2014-07-24 01:33:48
【问题描述】:
我发现了一行 JavaScript 代码,我不清楚它是如何工作的。假设window 对象之前没有设置任何app 属性:
var app = window.app || {};
问题是 - 为什么 JS 不会为不存在的 window 对象的 app 属性抛出任何 ReferenceError ,而是将 window.app 创建为 {} - 为什么?如果我执行以下行:
var a = b || {}
我收到ReferenceError: b is not defined,我没问题。此外,我确实理解 xxx || {} 表达式 - 如果它不是虚假的,它会返回第一个元素,否则返回第二个元素。例如,用空白对象初始化未定义的东西很有用(例如 JS 中的默认函数参数)。
【问题讨论】:
-
Not defined和undefined在 JS 中是两个不同的东西:) -
"相反,它将
window.app创建为undefined" - 您在哪里看到这种情况?上面的代码将创建window.app为{} -
@Ian 对不起,你是对的,一个错字 - 我已经更新了我的问题。
-
@tkoomzaaskz 啊,我明白了,没问题
-
@tkoomzaaskz 无处不在:ecma-international.org/ecma-262/5.1/#sec-8.6.1.
标签: javascript properties variable-assignment