var google = google || {};
google.Test = google.Test || {};
google.Test.Render = google.Test.Render || {};
以上和以下之间有什么区别。
var MyCompany = MyCompany || {
MyApplication: {
Model: {}
} };
||的目的是什么? ?
答案 0 :(得分:3)
第一个片段测试命名空间的每个级别是否存在,如果不存在,则会创建它(尽管第一行应该是var google = google || {};
)。
第二个仅测试顶级是否存在。例如:
var MyCompany = {};
// later in the same scope
var MyCompany = MyCompany || { MyApplication: { Model: {} } };
由于已定义MyCompany
,因此此表达式求值为MyCompany = MyCompany
,即MyCompany
保持空元素,不会创建嵌套对象。如果以下代码依赖于MyCompany.MyApplication
的存在,它将失败。
此处描述了||
的工作原理:In Javascript, what does it mean when there is a logical operator in a variable declaration?