以下代碼旨在從整數(數字)數組中移除最小數字。我無法理解爲什麼它會返回一個受.sort().reverse().pop();
影響的數組。JavaScript基礎知識:變量受不同變量的方法影響
我本以爲將var numbersTest
指定爲numbers
意味着數字本身不會受上述方法的影響。
任何人都可以請講解一下這個javaScript的功能嗎?
function removeSmallest(numbers) {
var numbersTest = numbers;
var lowestNum = numbersTest.sort().reverse().pop();
for (var i = 0; i < numbers.length; i++) {
if (numbers[i] === lowestNum) {
numbers.splice(i, 1);
}
}
return numbers;
}
removeSmallest([1,2,3,4,5]);
該函數返回[5, 4, 3, 2]
我想[2,3,4,5]
數組是對象,並且作爲[「的引用的值」](http://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-by-傳遞值語言),意味着'numbersTest'和'numbers'引用相同的數組。您可以使用'VAR numbersTest = numbers.slice(0)' – adeneo
當您使用運營商'=',你必須明白它實際上意味着克隆陣列。 '='不會對對象數據執行復制,而是複製引用。 –
謝謝!我看了一下你的鏈接和https://davidwalsh.name/javascript-clone-array現在明白這個問題。很抱歉如果之前詢問過這個問題 - 我不知道如何在Google搜索中提出問題。我會回答我自己的問題,並讚揚你。 – VoA