【发布时间】:2018-04-09 16:51:38
【问题描述】:
想问原因,为什么 JavaScript 不重置变量 在循环的每次迭代之后,在我尝试将其设置为等于函数参数(#1)的情况下。 如果变量等于特定数组(#2),它会重置。
#1
function almostIncreasingSequence(sequence) {
for (var i = 0; i < sequence.length; i++) {
var testArray=sequence;
testArray.splice(i, 1);
console.log(testArray);
}
}
almostIncreasingSequence([1, 3, 2, 1]);
#2
function almostIncreasingSequence(sequence) {
for (var i = 0; i < sequence.length; i++) {
var testArray=[1, 3, 2, 1];
testArray.splice(i, 1);
console.log(testArray);
}
}
almostIncreasingSequence([1, 3, 2, 1]);
将不胜感激每一个答案。谢谢。
【问题讨论】:
-
因为
splice修改了数组。 -
您的
var testArray=sequence不是在创建新数组,而是在引用序列。所以当你拼接 testArray 时,你也在拼接序列。如果你想让它重置,那么你需要var testArray = sequence.slice() -
@MohammadUsman 他的问题是不理解拼接会在循环继续导致偶尔跳过的索引时删除索引。他的问题是不理解变量赋值以及传递引用和传递值的内容。请删除或更新您的评论。
-
如果该答案有帮助,您可以将其标记为答案吗?
标签: javascript arrays loops