gpt4 book ai didi

javascript - 为什么我们不能直接在javascript中设置数组值?

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

我有一个空对象myscroll,定义为var myscroll = {}。现在我想向其添加一个数组属性。我是这样做的:

var myscroll = {}  

myscroll.point[0] = getScrollpos("home");
myscroll.point[1] = getScrollpos("artists");
myscroll.point[2] = getScrollpos("songs");
myscroll.point[3] = getScrollpos("beats");
myscroll.point[4] = getScrollpos("contact");

我收到错误 myscroll.point 未定义。然后我首先将其定义为 myscroll.point = [];,然后代码就起作用了。

那么,为什么我们不能直接设置数组值并将该属性添加到 JavaScript 中的对象中呢?为什么我们必须先独立定义它?

最佳答案

当您处理对象属性时,默认情况下您可以访问任何对象属性,该属性的值将为 undefined如果之前没有设置过的话。因此,通过使用索引(myscroll.point[0])访问未定义的属性,您正在尝试访问未定义的属性0,这是javascript中的原始值,>没有属性,所以你得到 TypeError .

因此,您可以将原始值设置为 undefined object 属性,但不能像使用对象那样使用未定义的属性进行拨号。

还想向您指出并解释与下面代码中的第一视角情况有点相似的情况:

var obj = []
obj[0] = 10

notDefinedObj[0] = 10 // cause ReferenceError

数组是对象。在 JS 中,如果没有事先初始化对象,则无法修改/添加/删除对象属性。

这是因为对象存储在内存中,您可以通过引用访问它们。当您尝试向其添加新属性时,例如将新元素添加到列表中,您正在尝试将属性附加到没有引用的变量,这就是为什么您得到 ReferenceError .

祝你好运!

关于javascript - 为什么我们不能直接在javascript中设置数组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37293030/

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