我有一个我正在调用.splice()的数组。偶然,有时代码以undefined
作为第一个参数运行,例如。
array.splice(undefined, 1);
但我的代码仍然可以像被调用一样工作:
array.splice(0,1);
所以我的问题是,为什么这有效?为什么以下工作?
[0, 1,2,3].splice(undefined,1); //returns 0
由于
答案 0 :(得分:2)
这是因为Array.prototype.splice()
将falsey
值视为与0
相同,undefined
为falsey
。
所以你也可以这样做:
[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]])
,如果begin
是undefined
,则切片从索引0
开始。