我正在查看一些JavaScript文件。他们中的一些人在开始时有一些有趣的东西:
var something = something || {};
其中"某事"显然是一种可变的名字。这是什么意思,它有什么作用?事实上,一个文件就有这个,没有别的。
答案 0 :(得分:6)
这是确保变量存在的常见模式,如果不存在,则将其设置为已知的初始值,以便以后使用。特别是:
如果变量something
已经有一个非假的值,则该行保持变量的值不变。
如果此变量something
没有值,或者是假的,则此行会将变量的值设置为{}
。
在脚本中向对象添加属性时,您会看到很多这种模式。假设你为Acme公司工作,你有很多脚本文件可以与其他人的代码集成。 Acme
对象将具有一堆属性和一堆函数。在某些脚本中,您可能希望向对象添加属性。但你不能只说
Acme.TIMEOUT = 300;
位于文件顶部,因为该变量可能不存在。但如果确实存在,则需要使用现有变量。如果没有,则需要先创建一个新对象。
所以
var Acme = Acme || {};
将保证它存在,然后你可以使用它。
但要小心这一点。我不喜欢这种模式,因为在现代JavaScript中(我们使用let
和const
而不是var
),拥有未定义的变量将导致抛出错误。你应该说:
window.Acme = window.Acme || {};
如果您在浏览器中。这样做的原因是它表明Acme
是window
对象的属性。引用对象的不存在的属性是无害的,您只需获得undefined
。但引用一个不存在的变量会在现代JavaScript中引发错误(如果没有,它应该)。
答案 1 :(得分:0)
"""的一个默认值变量。 因此,如果某些内容未初始化,它最终将包含一个空白对象({})。
换句话说,某些东西等于(sometging或{}),其中undefined的计算结果为false,因此返回{}。