我正在查看一些Backbone.js示例,他们在所有.js文件的顶部都有var app = app || {};
。我理解这个的字面含义,但它对其他一切有什么作用呢?
编辑:你们真的很快。
答案 0 :(得分:21)
如果尚未定义,则将变量app
定义为空对象。
这是有效的,因为未定义的评估结果为Javascript中的false
。
如果已定义,如果它具有值为false
的值(如空字符串),则仍可将其重新定义为空对象。
答案 1 :(得分:18)
javascript中的||
运算符将返回第一个操作数,如果它是“truthy”。如果不是,它将返回第二个操作数。如果尚未分配app
,则为undefined
,即“假”。因此,如果未定义或以其他方式为假,则会将空对象{{1}}分配给{}
。
答案 2 :(得分:5)
这意味着"如果尚未定义app#34; ,则将app定义为空对象。
OR
中的JavaScript
运算符不一定会产生boolean
。如果表达式的左侧产生false
,那么赋值将采用表达式的右侧。
答案 3 :(得分:2)
如果已定义app
,则它不执行任何操作。
如果未定义app
,则它等同于var app = {};