[英]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
相同,而undefined
為falsey
。
因此,您也可以這樣做:
[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.