我有语句,如果... else。
$.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
});
};
});
我在概述中只有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
。代码更清楚。