[英]Increment operator returns NaN
我试图使用++
运算符增加一个变量,但我不断得到NaN
作为结果,我不知道为什么。 这是我的代码:
var wordCounts = { };
var x = 0
var compare = "groove is in the heart";
var words = compare.split(/\b/);
for(var i = 1; i < words.length; i++){
if(words[i].length > 2){
wordCounts["_" + words[i]]++;
}
}
alert(wordCounts.toSource());
wordCounts["_" + words[i]]
值最初是undefined
因此当你使用它时,它会给你NaN。 只需将您的代码更改为:
if (wordCounts["_" + words[i]]) {
wordCounts["_" + words[i]]++;
} else {
wordCounts["_" + words[i]] = 1;
}
试试像......
var key = "_" + words[i];
if (wordCounts[key]) {
wordCounts[key]++
} else {
wordCounts[key] = 1;
}
你试图增加undefined
,它给你NaN
。
为了能够使用++
运算符(它取一个数字并将其递增一个),目标需要首先得到一个数字。
尝试检查对象是否已定义,如果未通过将其值设置为1来初始化对象。
if ('undefined' === typeof wordCounts["_" + words[i]]) {
wordCounts["_" + words[i]] = 0;
}
就像是:
var wordCounts = {};
var x = 0
var compare = "groove is in the heart";
var words = compare.split(/\b/);
for (var i = 1; i < words.length; i++) {
if ('undefined' === typeof wordCounts["_" + words[i]]) {
wordCounts["_" + words[i]] = 0;
}
if (words[i].length > 2) {
wordCounts["_" + words[i]]++;
}
}
alert( JSON.stringify( wordCounts ) );
你基本上做的是
undefined++
这将导致......
NaN
尝试...
wordCounts["_" + words[i]] = (wordCounts["_" + words[i]]++ || 1);
由于NaN
是“假”值,因此|| 将回落到1。
你试图增加一个对象(wordCounts [] ++)它不是一个数字所以它不能递增,这就是你得到那个错误的原因。 你究竟想做什么(用简单的英语)?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.