{}“(分配一个变量或一个空对象的变量)意味着在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
对象中正确定义func1
和func2
。
加载的第一个文件将创建最初的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?