这是什么意思在VAR定义:的Javascript VAR语法
var array = array || [];
...和未来的JavaScript的两个部分是彼此相等?
var array = array || [];
array.push([1],[2]);
array.push([3]);
=
var array = array.push([1],[2],[3]) || [];
?
这是什么意思在VAR定义:的Javascript VAR语法
var array = array || [];
...和未来的JavaScript的两个部分是彼此相等?
var array = array || [];
array.push([1],[2]);
array.push([3]);
=
var array = array.push([1],[2],[3]) || [];
?
这意味着,如果阵列是falsy值(undefined
,null
等) - 将被分配给该var array
的值是空数组 - []
;
编辑:
您的问题的第二部分 - 没有这些是不相同的。
例如,当阵列是undefined
:
var array = array.push([1],[2],[3]) || [];
这会抛出异常。
此:
var array = array || [];
array.push([1],[2]);
array.push([3]);
不会。
,如果它没有定义它的设置VAR到一个新的数组。
这句法使用的JavaScript布尔or
运营商和truthy/falsey声明对它的评价提供有效的默认值。
所以
var array = array || [];
表示 “使用一个空数组,如果array
评估不实”。
它等同于这一点,
var array;
if(array){
array = array;
} else {
array = [];
}
只是在更短的形式。
在第二部分中,没有这两个是不等价的。如果你使用|| []
,它不会被添加。
换句话说,在开始使用此,
var array;
if(array){
array = array;
} else {
array = [];
}
array.push([1],[2],[3]);
然后你把它修改为这个,
var array;
if(array){
array = array;
array.push([1],[2],[3]);
} else {
array = [];
}
首先声明,将array
为空数组,如果它是一个falsey值(null
,undefined
等)。
接下来的两个部分是不相等的,而当你尝试调用push
的东西,不知道是一个数组很可能会失败。
谢谢,我已经解决这个问题。我只是试图优化谷歌Analytics跟踪代码。 – 350D