使用 || 的 Javascript 命名空间

Posted

技术标签:

【中文标题】使用 || 的 Javascript 命名空间【英文标题】:Javascript namespaces that use || 【发布时间】:2012-11-06 12:48:07 【问题描述】:

我看到 javascript 中的命名空间定义为:

var AppSpace = AppSpace || ;

和/或

var namespace = ;

谁能告诉我:

    有什么区别? 是什么||用于第一个示例? 为什么在第一个示例中,AppSpace 被使用了两次? 首选语法是什么?

【问题讨论】:

elegantcode.com/2011/01/26/basic-javascript-part-8-namespaces 可能重复:***.com/questions/1378619/javascript-operator 不是重复 - 更多的是如何 ||运算符在命名空间中使用。这种用法让 Java 开发人员感到困惑,因为在 Java 中您不能以这种方式对命名空间执行操作。理解命名空间是 javascript 中的一等对象是一种思维方式的转变,并且非常有用。 【参考方案1】:

|| 运算符是 logical or,如果左操作数为真,则在 Javascript 中返回其左操作数,否则返回其右操作数。第一种语法更可取,因为当您不确定命名空间是否已经定义时,您可以在代码中的多个位置(例如在不同的文件中)重复使用它:

var AppSpace = AppSpace || ; // AppSauce doesn't exist (falsy) so this is the same as:
                               // var AppSauce = ;
AppSauce.x = "hi";

var AppSpace = AppSpace || ; // AppSauce does exist (truthy) so this is the same as:
                               // var AppSauce = AppSauce;
console.log(AppSauce.x); // Outputs "hi"

对比:

var AppSpace = ;
AppSauce.x = "hi";

var AppSpace = ; // Overwrites Appsauce
console.log(AppSauce.x); // Outputs undefined

【讨论】:

完美!非常感谢 我猜你写解释的时候饿了。但是谢谢,我在想||可能正在这样做,但在追查确认时遇到了麻烦。

以上是关于使用 || 的 Javascript 命名空间的主要内容,如果未能解决你的问题,请参考以下文章

使用 || 的 Javascript 命名空间

如何避免javascript命名空间冲突?

javascript 命名空间的首选技术

从命名空间调用方法以在另一个 javascript 文件中使用

面向对象的JavaScript命名空间

JavaScript之命名空间模式