JS 的一个赋值问题

2022-11-26 21:14:29 +08:00
 jamfer
var maps = [];
如果写
maps[0].img = new Image();
会报错 Uncaught TypeError: Cannot set properties of undefined

如果是
maps[0] = new Image();
就不会报错,但这个不是我要的,请问要怎么做才能让第一个方案不报错?
752 次点击
所在节点    问与答
9 条回复
eason1874
2022-11-26 21:16:02 +08:00
maps[0] = {img: new Image()}
cpstar
2022-11-26 21:19:39 +08:00
maps[0]=undefined
所以你猜 undefined 的 img 会是什么?
westoy
2022-11-26 21:55:25 +08:00
用 Proxy 代理一下
imicksoft
2022-11-26 21:56:18 +08:00
你没有给数组填充东西,就想操作数组的第一个元素?
imicksoft
2022-11-26 22:01:51 +08:00
var maps = [];//创建了个数组
maps[0].img = new Image();//给数组的第一个元素的添加一个 img ,但此时 maps 没有数据啊
maps[0] = new Image();//给数据的第一个元素赋值 image 对象,这个是向数组里添加元素


你操作失败,相当你想开旅馆,刚注册了空公司,还没有租房子,就想改房子的装潢,办不到啊,无对象啊。
gauzung
2022-11-26 22:05:33 +08:00
maps[0]是 undefined ,不能给 undefined 设置属性,即「 Cannot set properties of undefined 」

改正:
maps[0] = {};
maps[0].img = new Image();
HugoChao
2022-11-26 22:09:02 +08:00
你不能在声明变量之前使用变量
qiaobeier
2022-11-26 22:15:13 +08:00
你这是逻辑问题,不是代码问题。任何语言都不可能对不存在的对象赋值。
Rache1
2022-11-26 22:26:30 +08:00
@qiaobeier PHP:一切皆有可能 😏

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/898161

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX