Javascript命名空间/最佳实践

时间:2012-08-15 14:13:13

标签: javascript namespaces

var google = google || {};
google.Test = google.Test || {};
google.Test.Render = google.Test.Render || {};

以上和以下之间有什么区别。

var MyCompany = MyCompany || { MyApplication: { Model: {} } };

||的目的是什么? ?

1 个答案:

答案 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?