繁体   English   中英

为什么当我在循环外定义变量时,它不起作用

[英]Why when I define the variable outside the loop, it doesn't work

我正在处理 leetcode 问题 no.832。 谁能向我解释为什么当我在循环内定义温度时,代码给了我正确的 output,而当我在 function 的开头定义它时,它没有。

var flipAndInvertImage = function(image) {
    let temp = new Array(image.length);
    for (var i = 0; i < image.length; i++ ){
        //let temp = new Array(image.length);
        for (var j =0; j< image.length ; j++) {
            temp[j] = 1-image[i][image.length - j - 1];

        }
        image[i] = temp; 
    }
    return image; 
};

image = [[1,1,0],[1,0,1],[0,0,0]];
result = flipAndInvertImage(image);
console.log(result);

因为 Javascript 赋值运算符是按引用而不是按值工作的,所以通过在开头定义它,三个

image[i] = temp; 

实际上分配给image[i]相同的数组...您可以通过在最后更改一个数组的值来检查这一点,您会看到它在所有三个中都发生了变化:

var flipAndInvertImage = function(image) {
    let temp = new Array(image.length);
    for (var i = 0; i < image.length; i++ ){
        //let temp = new Array(image.length);
        for (var j =0; j< image.length ; j++) {
            temp[j] = 1-image[i][image.length - j - 1];

        }
        image[i] = temp; 
    }
    console.log(JSON.stringify(image)) // [[1,1,1],[1,1,1],[1,1,1]]
    image[0][0]=9
    console.log(JSON.stringify(image)) // [[9,1,1],[9,1,1],[9,1,1]]
    return image; 
};

image = [[1,1,0],[1,0,1],[0,0,0]];
result = flipAndInvertImage(image);
console.log(result);

因此image[0]image[1]image[2] “指向”同一个数组,因为它们包含对同一个数组的引用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM