以下代码旨在从整数(数字)数组中移除最小数字。我无法理解为什么它会返回一个受.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