获得意想不到的输出

时间:2018-05-30 07:45:36

标签: javascript maps

function normalize() {
   console.log(this.coords.map(function(x){
      return x/this.length;
 }));
}

normalize.call({coords: [0, 2, 3], length: 5});

预期产出:[0,0.4,0.6]

输出:[NaN,Infinity,Infinity]

有人可以解释错误吗?

1 个答案:

答案 0 :(得分:2)

您需要使用this以及与Array#map映射的功能。如果没有thisArg,则回调无法访问this

function normalize() {
    return this.coords.map(function (x) {
        return x/this.length;
    }, this);
}

console.log(normalize.call({ coords: [0, 2, 3], length: 5 }));