2011-08-23 83 views
1

这是什么意思在VAR定义:的Javascript VAR语法

var array = array || []; 

...和未来的JavaScript的两个部分是彼此相等?

var array = array || []; 
array.push([1],[2]); 
array.push([3]); 

=

var array = array.push([1],[2],[3]) || []; 

回答

1

这意味着,如果阵列是falsy值(undefinednull等) - 将被分配给该var array的值是空数组 - [];

编辑:

您的问题的第二部分 - 没有这些是不相同的。

例如,当阵列是undefined

var array = array.push([1],[2],[3]) || []; 

这会抛出异常。

此:

var array = array || []; 
array.push([1],[2]); 
array.push([3]); 

不会。

1

,如果它没有定义它的设置VAR到一个新的数组。

1

这句法使用的JavaScript布尔or运营商和truthy/falsey声明对它的评价提供有效的默认值。

所以

var array = array || []; 

表示 “使用一个空数组,如果array评估不实”。

2

它等同于这一点,

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 = []; 
} 
+0

谢谢,我已经解决这个问题。我只是试图优化谷歌Analytics跟踪代码。 – 350D

2

首先声明,将array为空数组,如果它是一个falsey值(nullundefined等)。

接下来的两个部分是不相等的,而当你尝试调用push的东西,不知道是一个数组很可能会失败。