簡體   English   中英

使用array.splice()第一個參數未定義,仍然有效

[英]using array.splice() first parameter undefined, still works

我有一個要調用.splice()的數組。 偶然地,有時代碼以undefined作為第一個參數運行,例如。

array.splice(undefined, 1);

但是我的代碼仍然像被調用一樣工作:

array.splice(0,1);

所以我的問題是,為什么這行得通? 為什么下面的工作?

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

謝謝

發生這種情況是因為Array.prototype.splice()falsey值視為與0相同,而undefinedfalsey

因此,您也可以這樣做:

[0, 1,2,3].splice(false,1); //returns 0
[0, 1,2,3].splice(null,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 

docs arr.slice([begin[, end]])如果undefined begin ,則slice從索引0開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM