使用array.splice()第一个参数undefined,仍然有效

时间:2016-05-21 10:04:58

标签: javascript

我有一个我正在调用.splice()的数组。偶然,有时代码以undefined作为第一个参数运行,例如。

array.splice(undefined, 1);

但我的代码仍然可以像被调用一样工作:

array.splice(0,1);

所以我的问题是,为什么这有效?为什么以下工作?

[0, 1,2,3].splice(undefined,1); //returns 0

由于

3 个答案:

答案 0 :(得分:2)

这是因为Array.prototype.splice()falsey值视为与0相同,undefinedfalsey

所以你也可以这样做:

[0, 1,2,3].splice(false,1); //returns 0
[0, 1,2,3].splice(null,1); //returns 0

答案 1 :(得分:1)

Javascript开发人员习惯于清理您传递给函数的值,以便始终可以使用。

在这种情况下,我们可以确定它不是一种隐含的强制,因为

Number(undefined); //NaN
Number("text"); //NaN

splice 函数中,它们被强制转换为 0

他们可能会使用像>> 0

这样的按位运算符
"2">>0        //2
-8>>0         //-8
null>>0       //0
undefined>>0  //0
"text">>0     //0 

答案 2 :(得分:0)

docs arr.slice([begin[, end]]) 如果beginundefined,则切片从索引0开始。