[英]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.