{}“(分配一个变量或一个空对象的变量)意味着在Javascript中?

看一下在线源代码,我在几个源文件的顶部看到了这个。

var FOO = FOO || {};
FOO.Bar = …;

但我不知道什么|| {} || {}的确如此。

我知道{}等于new Object() ,我认为|| 就像“如果它已经存在使用它的值,否则使用新的对象。

为什么我会在源文件的顶部看到这个?


你对|| {}的意图的猜测 || {}非常接近。

在文件顶部看到的这种特殊模式用于创建一个名称空间,即一个命名对象,在该对象下可以创建函数和变量,而不会过度地污染全局对象。

它被使用的原因是,如果你有两个(或更多)文件:

var MY_NAMESPACE = MY_NAMESPACE || {};
MY_NAMESPACE.func1 = {
}

var MY_NAMESPACE = MY_NAMESPACE || {};
MY_NAMESPACE.func2 = {
}

这两个文件共享相同的命名空间,然后加载这两个文件的顺序无关紧要,您仍然可以正确地在MY_NAMESPACE对象中正确定义func1func2

加载的第一个文件将创建最初的MY_NAMESPACE对象,随后加载的任何文件都会增加该对象。

有用地,这也允许异步加载共享相同命名空间的脚本,这可以改善页面加载时间。 如果<script>标签设置了defer属性,则无法知道它们将按何种顺序进行解释,因此如上所述,这也解决了该问题。


var AEROTWIST = AEROTWIST || {};

基本上,这行是说设置AEROTWIST变量到值AEROTWIST变量,或将其设置为一个空对象。

双管|| 是OR语句,OR的第二部分只在第一部分返回false时执行。

因此,如果AEROTWIST已经有一个值,它将保持为该值,但如果它之前没有设置,则它将被设置为空对象。

它基本上是这样说的:

if(!AEROTWIST) {var AEROTWIST={};}

希望有所帮助。


||的另一个常见用途 也是为未定义的函数参数设置一个默认值:

function display(a) {
  a = a || 'default'; // here we set the default value of a to be 'default'
  console.log(a);
}

// we call display without providing a parameter
display(); // this will log 'default'
display('test'); // this will log 'test' to the console

其他编程中的等价物通常是:

function display(a = 'default') {
  // ...
}
链接地址: http://www.djcxy.com/p/2793.html

上一篇: {}" (assign a variable or an empty object to that variable) mean in Javascript?

下一篇: Namespacing technique in JavaScript, recommended? performant? issues to be aware of?