15

我正在查看一些 Backbone.js 示例,它们var app = app || {};位于所有 .js 文件的顶部。我理解这个的字面意思,但它对其他一切有什么作用?

编辑:你们真的很快。

4

4 回答 4

23

app如果尚未定义,它将把变量定义为一个空对象。

这是有效的,因为false在 Javascript 中未定义的计算结果。

如果它被定义,它仍然可以被重新定义为一个空对象,如果它有一个评估为 的值false,例如一个空字符串。

于 2013-04-29T17:30:41.623 回答
17

||javascript 中的运算符将返回第一个操作数,如果它是“真实的”。如果不是,它将返回第二个操作数。如果app还没有赋值,undefined则为 ,即“假”。因此,如果它没有被定义或者是错误的,一个空对象{}将被分配给app.

于 2013-04-29T17:33:26.980 回答
6

这意味着“如果尚未定义 app,请将其定义为空对象”

in的OR运算符JavaScript不一定产生 a boolean。如果表达式的左侧产生false,则赋值采用表达式的右侧。

于 2013-04-29T17:31:05.220 回答
2

如果app已经定义,它什么也不做。如果app未定义,则相当于var app = {};

于 2013-04-29T17:32:27.147 回答