Javascript 主干名称空间

Javascript 主干名称空间,javascript,backbone.js,Javascript,Backbone.js,我试图从《开发主干网应用程序》一书中学习主干网。 它描述了臭名昭著的TodoMVC应用程序,我也在一些在线教程中查看了它 我似乎找不到任何关于这行代码含义的解释: var app = app || {} ; 在这本书中,模型、视图、集合和路由器的代码被分割成单独的文件,并放在相应的文件夹中。每个文件都以这段代码开头,但没有解释为什么它以这段代码开头。我假设这是某种名称空间,而|是逻辑Or运算符,但坦率地说,我不知道他们在这里试图实现什么 有谁能启发我吗? Valleyken通常这样做是为了在未

我试图从《开发主干网应用程序》一书中学习主干网。
它描述了臭名昭著的
TodoMVC
应用程序,我也在一些在线教程中查看了它

我似乎找不到任何关于这行代码含义的解释:

var app = app || {} ;
在这本书中,模型、视图、集合和路由器的代码被分割成单独的文件,并放在相应的文件夹中。每个文件都以这段代码开头,但没有解释为什么它以这段代码开头。我假设这是某种名称空间,而
|
是逻辑Or运算符,但坦率地说,我不知道他们在这里试图实现什么

有谁能启发我吗?

Valleyken

通常这样做是为了在未传递局部变量时为其设置默认值:

function(arg){
 var arg = arg || {};
 console.log(arg);
}
如果传递了arg,则将局部变量arg设置为传递的对象,否则将通过{}创建一个新对象,并将局部arg变量设置为该对象


请参阅:

通常这样做是为了在未传递局部变量时为其设置默认值:

function(arg){
 var arg = arg || {};
 console.log(arg);
}
如果传递了arg,则将局部变量arg设置为传递的对象,否则将通过{}创建一个新对象,并将局部arg变量设置为该对象


请参阅:

在构建应用程序的某个时候,您可能希望异步加载文件,这意味着您无法控制文件的解释顺序以及声明
应用程序的变量的时间

使用
var-app=app | |{}
允许您在模式上使用变量:您可以大致将此语句转换为如果应用程序已声明,则保留它,如果未声明,则创建新对象并使用它

有关此语句内部工作原理的解释,请参阅:

&&和| |运算符实际上返回 指定的操作数,因此如果这些运算符与非布尔运算符一起使用 值,则它们可能返回非布尔值


在构建应用程序的某个时候,您可能希望异步加载文件,这意味着您无法控制文件的解释顺序,从而无法控制何时声明
app
变量

使用
var-app=app | |{}
允许您在模式上使用变量:您可以大致将此语句转换为如果应用程序已声明,则保留它,如果未声明,则创建新对象并使用它

有关此语句内部工作原理的解释,请参阅:

&&和| |运算符实际上返回 指定的操作数,因此如果这些运算符与非布尔运算符一起使用 值,则它们可能返回非布尔值

这允许您创建空对象,将所有Javascript对象存储在其中。(名称空间)保持对象有组织且不在窗口上(全局名称空间)

||{}
只是防止您在javascript文件的加载顺序发生变化时意外地将名称空间设置为空对象。在将对象设置为
{}

这允许您创建空对象,将所有Javascript对象存储在其中。(名称空间)保持对象有组织且不在窗口上(全局名称空间)

||{}
只是防止您在javascript文件的加载顺序发生变化时意外地将名称空间设置为空对象。在将对象设置为
{}