调用函数时的角度5怪异行为

时间:2018-07-09 15:10:24

标签: javascript angular typescript

使用角度5, 我叫denoFormat(item [“ DENOMINATION”]) 我收到以下错误堆栈

  

vendor.91392bd4e66ade432f98.bundle.js:1错误TypeError:无法读取   未定义的属性“ denoFormat”       在main.e31e50ee66f46596cba1.bundle.js:1       在Function.g.map.g.collect(供应商91392bd4e66ade432f98.bundle.js:1)       在e._next(main.e31e50ee66f46596cba1.bundle.js:1)       在e.T14 + .e .__ tryOrUnsub(vendor.91392bd4e66ade432f98.bundle.js:1)       在e.T14 + .e。next(vendor.91392bd4e66ade432f98.bundle.js:1)       在e.T14 + .e.next(vendor.91392bd4e66ade432f98.bundle.js:1)       在e.T14 + .e。next(vendor.91392bd4e66ade432f98.bundle.js:1)       在e.L8VJ.e._next(vendor.91392bd4e66ade432f98.bundle.js:1)       在e.T14 + .e。next(vendor.91392bd4e66ade432f98.bundle.js:1)       在XMLHttpRequest.s(vendor.91392bd4e66ade432f98.bundle.js:1)

如果我要使用item [“ DENOMINATION”],则不会发生任何错误。有人可以解释发生了什么事吗?

 var _data =  [ { DENOMINATION: 0, FIT: 0, UNFIT: 0},
        { DENOMINATION: 1, FIT: 2157, UNFIT: 1842},
        { DENOMINATION: 2, FIT: 2455, UNFIT: 2031 }
  ];

  var arr = [];
  arr.push(_.map(this._data ,function(item){
    if (((item["FIT"] + item["UNFIT"]) != 0) && (item["DENOMINATION"] <= 5)){
      return {"name": this.denoFormat(item["DENOMINATION"]) ,"series": [
      {
        "name": "FIT",
        "value": item["FIT"]
      },
      {
        "name": "UNFIT",
        "value": item["UNFIT"]
      }
    ]}
  } else{
    return;
}
}));
      denoFormat(n){
        var val;
        switch (n){
          case 0:
          val = 1000;
          break;
          case 1:
          val = 5000;
          break;
          etc.
        }
        return val;
      }

1 个答案:

答案 0 :(得分:3)

在这种情况下,必须使用箭头功能来防止范围更改。

arr.push(_.map(this._data , (item) => {
    // ...
    this.denoFormat()
    //...
}