为什么我会收到无法读取未定义属性的错误?
2017-05-21
1085
2个回答
根据快照,您正在使用 Chrome,并且 Chrome 很早就支持
.forEach
。我猜,问题是由于最小化或缺少分号(
;
)造成的。
示例
function test(){
this.name = "test";
}
var a = new test()['width', 'height'].forEach(key => {
console.log(key);
});
Rajesh
2017-05-21
您已从代码中省略了实际导致问题的内容。
在
[
之前,您必须有一些引用对象的内容。
这意味着
[]
语法变为读取属性值的语法,而不是创建数组的语法。
然后(因为您使用了逗号运算符)
'width', 'height'
解析为
'height'
,因此您尝试读取
height
属性。
由于无论对象是什么,都没有
height
属性,因此您将获得
undefined
,它没有
forEach
属性。
要解决此问题,请 在上一个语句的末尾添加一个分号 。
代码的第二个版本可以正常工作,因为
var
语句不能遵循它之前的语法,因此它会触发
自动分号插入
。
Quentin
2017-05-21