我正在查看一些Backbone.js的例子,它们在所有.js文件的顶部都有var app = app || {};
。 我理解这个的字面意思,但它在参考其他所有内容时是什么作用?
编辑:你们真的非常快。
我正在查看一些Backbone.js的例子,它们在所有.js文件的顶部都有var app = app || {};
。 我理解这个的字面意思,但它在参考其他所有内容时是什么作用?
编辑:你们真的非常快。
如果变量 app
还未被定义,它会被赋值为空对象。
这种方式有效是因为在JavaScript中, 未定义的变量会被解释为 false
。
即使已经定义了变量,它仍然可以被重新定义为空对象,只要它的值被解释为 false
,例如空字符串。
||
运算符在 Javascript 中,如果第一个操作数为“真值”则返回它。否则,返回第二个操作数。如果 app
没有被赋值,则会是 undefined
,即为“假值”。因此,如果没有定义或者是其他假值,就会将空对象 {}
赋值给 app
。
在JavaScript中,OR
运算符不一定生成一个布尔值。如果表达式的左侧产生了false
,则赋值采用了表达式的右侧。
app
已经定义了,那么它什么也不做。
如果app
未定义,则等同于 var app = {};
。
app
的值为假,就将app
定义为空对象。 - Bradvar app = app;
实际上什么也不会做。 - nullabilityvar app = false; app = app || {}; /*App现在等于{},因为app是“falsey”*/
。请参考@recursive的答案获取正确答案。 - Steven Wexler