此代码
function Test(){
}
new Test()
['width', 'height'].forEach(key => {
console.log(key);
});
给我错误
但这段代码不是
function Test(){
}
new Test()
var arr = ['width', 'height'];
arr.forEach(key => {
console.log(key);
});
为什么吗
我正在使用chrome 版本53.0.2785.116(64位) - Macbook air 2014
答案 0 :(得分:2)
根据快照,您使用Chrome并且Chrome长时间支持.forEach
。我的猜测是,问题是由于缩小或缺少分号(;
)
<强>示例强>
function test(){
this.name = "test";
}
var a = new test()['width', 'height'].forEach(key => {
console.log(key);
});
答案 1 :(得分:1)
您已从代码中省略了实际导致问题的任何内容。
在[
之前,您必须拥有引用某个对象的内容。
这意味着[]
语法成为读取属性值而不是创建数组的语法的语法。
然后(因为您使用的是逗号运算符)'width', 'height'
解析为'height'
,因此您尝试阅读height
属性。
由于对象无任何height
属性,因此undefined
没有forEach
属性。
要修复此在前一个语句末尾添加分号。
代码的第二个版本有效,因为var
语句不能遵循您之前的语法,因此它会触发自动分号插入。