3

我已经看到 JavaScript 中的命名空间定义为:

var AppSpace = AppSpace || {};

和/或

var namespace = {};

谁能告诉我:

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

1 回答 1

9

||运算符是 JavaScript 中的whichlogical 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"

相对:

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

var AppSpace = {}; // Overwrites Appsauce
console.log(AppSauce.x); // Outputs undefined
于 2012-11-18T11:10:38.607 回答