JavaScript不重置循环中的变量

JavaScript不重置循环中的变量,javascript,arrays,loops,Javascript,Arrays,Loops,想问一下原因,为什么JavaScript不重置变量 在每次循环迭代之后,当我试图将其设置为等于函数参数(#1)时。 如果变量等于一个特定数组(#2),它会进行重置 #1 函数几乎递增序列(序列){ 对于(变量i=0;i

想问一下原因,为什么JavaScript不重置变量 在每次循环迭代之后,当我试图将其设置为等于函数参数(#1)时。 如果变量等于一个特定数组(#2),它会进行重置

#1
函数几乎递增序列(序列){
对于(变量i=0;i

我会感激你的每一个回答。谢谢。

如上所述,您对变量赋值感到困惑

在#1中,您的印象是
var testArray=sequence
与说
var testArray=[1,3,2,1]
相同。事实并非如此
var testArray=sequence
只是对sequence的引用。无论您在
testArray
中修改什么,都会调用
sequence
并在那里修改它

要将#1修复为#2,您必须执行
var testArray=sequence.slice()
。这将执行
序列的浅层复制
,以便修改
测试阵列
不会影响
序列

函数几乎递增序列(序列){
对于(变量i=0;i几乎递增的序列([1,3,2,1])如上所述,您对变量赋值感到困惑

在#1中,您的印象是
var testArray=sequence
与说
var testArray=[1,3,2,1]
相同。事实并非如此
var testArray=sequence
只是对sequence的引用。无论您在
testArray
中修改什么,都会调用
sequence
并在那里修改它

要将#1修复为#2,您必须执行
var testArray=sequence.slice()
。这将执行
序列的浅层复制
,以便修改
测试阵列
不会影响
序列

函数几乎递增序列(序列){
对于(变量i=0;i几乎递增的序列([1,3,2,1])因为
splice
在适当的位置修改数组。您的
var testArray=sequence
没有创建新数组,只是引用序列。所以,当你们拼接testArray时,你们也在拼接序列。如果要重置它,则需要@MohammadUsman的
var testArray=sequence.slice()
可能的重复项。他的问题是,在循环继续时,拼接会删除索引,导致偶尔跳过索引。他的问题是不理解变量赋值以及什么传递引用和什么传递值。请删除或更新您的注释。如果该答案有帮助,您可以将其标记为答案吗?因为
splice
修改了原位数组。您的
var testArray=sequence
并没有创建新数组,只是引用了序列。所以,当你们拼接testArray时,你们也在拼接序列。如果要重置它,则需要@MohammadUsman的
var testArray=sequence.slice()
可能的重复项。他的问题是,在循环继续时,拼接会删除索引,导致偶尔跳过索引。他的问题是不理解变量赋值以及什么传递引用和什么传递值。请删除或更新您的评论。如果该答案有帮助,您可以将其标记为答案吗?
#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]);