【发布时间】:2015-12-19 19:41:21
【问题描述】:
我在 JavaScript 对象中有一个数组,它的行为方式我无法解释。
代码是:
var board = {
val: [false],
init: function() {
console.log(board); // when expanded, console says board.val[0] = true
console.log(board.val); // console says board.val[0] = false
board.val[0] = true;
},
};
board.init();
该方法在控制台中输出对象,然后修改数组中的值。但是值改变之前的对象的输出表明值已经改变了。
我正在寻找关于为什么会发生这种情况的解释,或解释的链接。如果需要,请在 cmets 中要求澄清。我很乐意提供我忽略的任何细节。
我正在处理的项目中的数组是一个大型的多维数组,这种行为会导致意外结果。很抱歉,我没有任何想法或研究可以分享。我不知道要搜索什么并没有给我 JavaScript 数组的基础知识。我以为我知道 JavaScript 数组和对象是如何工作的,但这让我很困惑。
【问题讨论】:
-
刚刚测试了你的代码,它(正确地)输出'false'。您是在特定浏览器中还是在 NodeJS 中进行测试?
-
数组本身不能为真或假。你的例子没有意义。
-
board.val 是一个数组。你应该测试 board.val[0]。为什么不简单地分配 board.val = false 而不是 board.val = [false] ?
-
建议将行改为:“console.log(board.va[0]);”而是为您提供数组第一个元素的值。
-
@Martin,我正在 Chrome 中进行测试。为了清楚起见,
console.log(board);表明 board.val[0] = false
标签: javascript arrays object