繁体   English   中英

增量运算符返回NaN

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM