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

array.splice(undefined, 1);


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

array.splice(0,1);


所以我的问题是,为什么这行得通?为什么下面的工作?

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


谢谢

最佳答案

Javascript开发人员用于清除传递给函数的值,以便始终使用某些东西。

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

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


在拼接功能中,它们被强制为0。

他们可能使用了>> 0之类的按位运算符

"2">>0        //2
-8>>0         //-8
null>>0       //0
undefined>>0  //0
"text">>0     //0

关于javascript - 使用array.splice()第一个参数未定义,仍然有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37361472/

10-12 18:24