我有声明,如果......其他。
$.each(mapGeoJSON.features, function (index, feature) {
if((Overview.countryData[index])!='undefined'){
data.push({
key: feature.properties['hc-key'],
value: Overview.countryData[index].value
});
}else{
data.push({
key: feature.properties['hc-key'],
value: 0
});
};
});
我在Overview.countryData中只有1个数据,但它第二次运行并且给出错误无法读取第5行中未定义的属性“值”。是什么原因可以说谁?
答案 0 :(得分:1)
问题很简单。 Overview.countryData[index]
的值未定义为index
,if
条件中的值为undefined
。
但undefined
与'undefined'
不同。
undefined
是对象或数组中缺少键的值,是未设置或尚未设置的变量的值。
'undefined'
是一个字符串文字。
无论您如何比较它们(使用==
或===
),undefined
和'undefined'
永远不会相等。
因此,if
条件始终为true
,并且始终采用if
条件。但Overview.countryData[index]
分支中的代码假定undefined
存在(已定义,不是if (Overview.countryData[index] != undefined)
)。
正确的测试条件是:
if (Overview.countryData[index])
你也可以使用:
undefined
因为false
在布尔上下文中始终被评估为stocks = ['aapl', 'nvda', 'amgn']
。代码更加清晰。