为何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
相关产品推荐
相关产品推荐

