You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何for...of循环中使用属性访问器x.y会报错?MDN说明解析

问题解答

MDN里提到的for (x.y of iterable)写法,不是用来定义局部变量的,而是把迭代过程中的值赋值给已存在对象的属性——你报错的核心原因就是x这个对象根本没提前定义,JavaScript找不到它,自然会抛出ReferenceError。

举个正确的使用例子:

// 先定义好对象x
const x = {};
const arr = [1, 2, 3];

// 把数组的每个元素赋值给x的y属性
for (x.y of arr) {
  console.log(x.y); // 依次输出1、2、3
}

简单总结:这种写法的作用是更新已有对象的属性值,不是声明新变量。如果要声明局部变量,你得用let/const(比如for (const y of arr)),但x.y属于属性访问语法,前提是x必须是已经存在的对象。

内容的提问来源于stack exchange,提问作者user1835157

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 04:55:59