开发者问题收集

未捕获的类型错误:无法读取未定义的属性 - javascript

2015-06-06
1909

我知道这个问题以前有人问过,但是我查看了该问题的不同版本,并没有找到针对我这个问题的答案。

我的代码:

var display = {

difference: function(a) {
    return Math.abs(state.price - state.greens[a].pricePer30);
},
// Some more methods here

当我运行代码时,我得到了这个:

Uncaught TypeError: Cannot read property 'pricePer30' of undefined

但是,如果我运行

console.log(display.difference(0))

它会返回正确的答案。

当我阅读 问题时:

我认为我使用的参数实际上可能在脚本的其他地方被重复使用,因此我将参数更改为:

var display = {

difference: function(num) {
    return Math.abs(state.price - state.greens[num].pricePer30);
},
// Some more methods

但我收到了相同的错误消息。

我应该在代码中寻找什么来解决这个问题?

1个回答

问题显然在于 state.greens[a] 对于特定索引 a 未定义。在前面添加检查以摆脱直接问题,但我猜你还必须调查为什么它对于索引 a 也未定义。

if(typeof state.greens[a] !== "undefined") {
    return Math.abs(state.price - state.greens[a].pricePer30);
} else {
    console.warn("Found undefined state for index: ", a);
}
Georgios Dimitriadis
2015-06-06