我在 JavaScript 中创建了一个多维数组类型的变量,并在发送到函数之前对其进行了控制台,但它在控制台上显示了错误的输出,但是如果我删除该函数,则一切正常function ROT(a, d) { return a ^ d;}function thetha_step(A) { const C = []; const D = []; //C[x] part for (let x=0; x<5; x++) { C[x] = A[x][0]; for (let y=1; y<5; y++) { C[x] = C[x] ^ A[x][y]; } } //D[x] part D[0] = C[4] ^ ROT(C[1], 1); for (let x=1; x<5; x++) { D[x] = C[x-1] ^ ROT(C[x+1], 1); } //A[x,y] for (let x=0; x<5; x++) { for (let y=0; y<5; y++) { A[x][y] = A[x][y] ^ D[x]; } } return A;}var bin= [ [1, 0, 0, 0, 1], [0, 1, 0, 0, 0], [0, 0, 1, 1, 1], [1, 0, 1, 1, 1], [1, 0, 1, 0, 1]];console.log(bin);console.log(thetha_step(bin));# Outputs as #(5) [Array(5), Array(5), Array(5), Array(5), Array(5)]0: (5) [2, 3, 3, 3, 2]1: (5) [2, 3, 2, 2, 2]2: (5) [1, 1, 0, 0, 0]3: (5) [2, 3, 2, 2, 2]4: (5) [1, 0, 1, 0, 1](5) [Array(5), Array(5), Array(5), Array(5), Array(5)]0: (5) [2, 3, 3, 3, 2]1: (5) [2, 3, 2, 2, 2]2: (5) [1, 1, 0, 0, 0]3: (5) [2, 3, 2, 2, 2]4: (5) [1, 0, 1, 0, 1]我不明白为什么它没有显示正确的 bin 变量值,但是当我删除该函数时,所有显示都是正确的。请帮助我哪里出错了。
1 回答
largeQ
TA贡献2039条经验 获得超8个赞
这里有两件事结合在一起。
首先,数组是对象,因此“通过引用”传递。当您A在函数内部进行修改时,您实际上是在修改 中的同一个数组,而bin不是它的副本。
其次,浏览器控制台显示“活动”对象——当对象的内容发生变化时,控制台显示也会发生变化。
如果要捕获bin输出时的值,请尝试执行以下操作:
console.log(JSON.stringify(bin));
添加回答
举报
0/150
提交
取消
