gpt4 book ai didi

javascript - 在哪里可以找到有关 JavaScript 中对象内数组行为的信息?

转载 作者:行者123 更新时间:2023-11-28 18:51:50 24 4
gpt4 key购买 nike

我的 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();

该方法在控制台中输出对象,然后修改数组中的值。但是在值被更改之前对象的输出表明该值已经被更改。

我正在寻找为什么发生这种情况的解释,或解释的链接。如果需要的话,请在评论中要求澄清。我很乐意提供我忽略的任何细节。

我正在处理的项目中的数组是一个大型的多维数组,这种行为会导致意外的结果。抱歉,我没有任何想法或研究可以分享。我不知道要搜索什么,因为它没有给我 JavaScript 数组的基础知识。我以为我知道 JavaScript 数组和对象是如何工作的,但这让我很困惑。

最佳答案

这就是控制台的工作方式 - 当您记录完整(未展开)的对象时,您会在展开对象时看到其属性的值,而不是在记录对象时看到。所以,在你的例子中,你得到了 var true 因为它同时变成了 true。

对此没有“修复”,除了在记录对象时将对象字符串化之外,但每当您需要变量的准确表示时,请确保记录变量本身,而不是其父对象。

它的行为方式与数组和对象相同,只要您的数组/对象嵌套得足够深以便控制台折叠它,请观看:

var arr = [[false]];
var obj = {sub: {subsub: false}};
console.log(arr, obj, JSON.stringify(arr), JSON.stringify(obj));

arr[0][0] = true;
obj.sub.subsub = true;

打开控制台,展开它们,您将在同一控制台行中看到矛盾(假/真)。

关于javascript - 在哪里可以找到有关 JavaScript 中对象内数组行为的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34374636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com