[英]javascript array splice without index
我想知道這段代碼:
var numbers, _ref;
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
[].splice.apply(numbers, [3, 4].concat(_ref = [-3, -4, -5, -6])), _ref;
alert(numbers);
從這里開始 ,結果是[0, 1, 2, -3, -4, -5, -6, 7, 8, 9]
,任何人都能解釋一下這個嗎?
function .apply(context,argsArray)在給定的上下文中調用函數 ,傳遞argsArray作為函數的參數。
在這種情況下, 函數是[].splice
,它按以下順序獲取以下參數:
[3,4].concat(_ref = [-3, -4, -5, -6])
通過將兩個數組連接在一起來計算數組,給出[3, 4, -3, -4, -5, -6]
。 這是傳遞給.apply()
,因此:
因此.apply()
導致.splice()
函數在numbers
數組的上下文中運行,刪除索引3,4,5和6處的元素,然后插入元素-3,-4,-5和 -原始數組中的“2”和“7”之間的比較。
編輯:請參閱RobG的答案,了解原始代碼等同的內容(而不是對其部分的解釋)。
您的代碼解析為以下變量聲明:
var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
var _ref = [-3, -4, -5, -6];
而這些表達方式:
numbers.splice(3, 4, -3, -4, -5, -6);
_ref;
alert(numbers);
[3, 4].concat(_ref = [-3, -4, -5, -6])
逃避[3, 4, -3, -4, -5, -6]
和[].splice.apply(numbers, [3, 4, -3, -4, -5, -6]))
到numbers.splice(3, 4, -3, -4, -5, -6)
導致4個元素從索引3開始要刪除並將元素“-3,-4,-5,-6”插入索引3.參見拼接 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.