这在var定义中意味着什么:
var array = array || [];
... javascript的下两部分相互相等?
var array = array || [];
array.push([1],[2]);
array.push([3]);
=
var array = array.push([1],[2],[3]) || [];
答案 0 :(得分:2)
相当于此,
var array;
if(array){
array = array;
} else {
array = [];
}
只是缩短形式。
在第二部分中,没有两个不相等。
array.push([1],[2],[3])
无论如何都需要执行,如果你使用|| []
则不会被添加。
换句话说,你从这开始,
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 = [];
}
答案 1 :(得分:2)
第一个语句会将array
设置为空数组(如果它是假值(null
,undefined
等)。
接下来的两个部分不相等,当你试图在一个不知道是数组的东西上调用push
时,它可能会失败。
答案 2 :(得分:1)
如果未定义var,则将var设置为新数组。
答案 3 :(得分:1)
这意味着如果数组是一个假值(undefined
,null
等) - 将分配给var array
的值是一个空数组 - {{1} };
编辑:
问题的第二部分 - 这些不等同。
例如,当数组为[]
时:
undefined
这将引发异常。
此:
var array = array.push([1],[2],[3]) || [];
不会。
答案 4 :(得分:1)
该语法使用javascript boolean or
运算符,并对truthy / falsey语句进行评估,以提供有效的默认值。
所以
var array = array || [];
表示“如果array
评估为假,则使用空数组”。