使用||的Javascript名称空间

Ada*_*ies 3 javascript javascript-namespaces

我在JavaScript中看到名称空间被定义为:

var AppSpace = AppSpace || {};
Run Code Online (Sandbox Code Playgroud)

和/或

var namespace = {};
Run Code Online (Sandbox Code Playgroud)

谁能告诉我:

  1. 有什么不同?
  2. 什么是|| 用于第一个例子?
  3. 在第一个例子中,为什么要AppSpace使用两次?
  4. 哪个是首选语法?

Pau*_*aul 9

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

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"
Run Code Online (Sandbox Code Playgroud)

与:

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

var AppSpace = {}; // Overwrites Appsauce
console.log(AppSauce.x); // Outputs undefined
Run Code Online (Sandbox Code Playgroud)