我正在尝试从“开发Backbone.js应用程序”一书中学习骨干
它描述了臭名昭着的TodoMVC
应用程序,我也在几个在线教程中查看过。
我似乎无法找到关于这行代码含义的任何解释:
var app = app || {} ;
在本书中,模型,视图,集合,路由器的代码被分成放在相应文件夹中的单独文件。每个文件都以此代码开头,但没有解释为什么它以此开头。我认为它是某种命名空间,而||
是逻辑Or运算符,但坦率地说我不知道他们在这里想要完成什么。
任何可以启发我的人? Valleyken
答案 0 :(得分:1)
在构建应用程序的某个时刻,您可能希望异步加载文件,这意味着您无法控制文件的解释顺序,因此会声明app
变量。< / p>
使用var app = app || {} ;
可以在Loose Augmentation模式上使用变体:您可以粗略地将此语句翻译为如果已经声明了应用程序,请保留它,如果没有创建新对象并使用它。
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators以解释本声明的内部运作:
&amp;&amp;和||运算符实际上返回其中一个的值 指定的操作数,因此如果这些运算符与非布尔值一起使用 值,它们可能返回非布尔值。
答案 1 :(得分:0)
通常这样做是为了设置一个默认值,如果它没有传递给你的局部变量:
function(arg){
var arg = arg || {};
console.log(arg);
}
如果传递了arg,则将局部变量arg设置为传递的对象,否则将通过{}创建一个新对象,并将本地arg变量设置为该对象。
答案 2 :(得分:0)
window.app = app || {};
app.models = app.models || {};
app.models.myModel = {
myfunction: function () {
// your code...
}
}
这允许您创建空对象,您将存储所有Javascript对象。(命名空间)保持对象有条理而不是在窗口(全局命名空间)
如果javascript文件的加载顺序发生变化,|| {}
只会让您不小心将名称空间设置为空对象。在将其设置为{}