Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript +=有效,但++_Javascript_Increment - Fatal编程技术网

Javascript +=有效,但++

Javascript +=有效,但++,javascript,increment,Javascript,Increment,在我的Javascript代码中,+=增加数字,但++不增加。有人能解释一下原因吗 不会增加 words[splitted[i]] = ( typeof words[splitted[i]] != 'undefined' ) ? words[splitted[i]]++ : 1 words[splitted[i]] = ( typeof words[splitted[i]] != 'undefine

在我的Javascript代码中,+=增加数字,但++不增加。有人能解释一下原因吗

不会增加

words[splitted[i]] = ( typeof words[splitted[i]] != 'undefined' ) 
                       ? words[splitted[i]]++ 
                       : 1
words[splitted[i]] = ( typeof words[splitted[i]] != 'undefined' ) 
                       ? words[splitted[i]] += 1 
                       : 1
增加

words[splitted[i]] = ( typeof words[splitted[i]] != 'undefined' ) 
                       ? words[splitted[i]]++ 
                       : 1
words[splitted[i]] = ( typeof words[splitted[i]] != 'undefined' ) 
                       ? words[splitted[i]] += 1 
                       : 1
示例代码是

请尝试将++移到左侧

var number = 1;
number = ++number;
>>> 2
++的位置之所以不同,是因为在右侧,您正在执行赋值,然后是右侧值的增量。当操作符位于左侧时,您正在执行先递增后赋值。

尝试将++移到左侧

var number = 1;
number = ++number;
>>> 2

++的位置之所以不同,是因为在右侧,您正在执行赋值,然后是右侧值的增量。当运算符位于左侧时,您正在执行增量然后赋值。

您的代码以更简单的形式,在定义单词[splitted[i]]时,可能会产生这种形式的代码:

x = x++;
x++返回x的值,然后递增,然后设置返回给x的值。这与

x = ++x;
其中x先递增,然后求值

要了解其工作原理,请查看以下代码:

x = 1;
y = 1;
z = 1;
x = x++;
y = ++y;
z = z += 1;
alert(x); // 1
alert(y); // 2
alert(z); // 2
在任何情况下,我认为你真正想做的是以下几点:

(typeof words[splitted[i]] !== 'undefined') ? 
    words[splitted[i]]++ : 
    words[splitted[i]] = 1;
这是更多的行,但可能更可读:

if (typeof words[splitted[i]] !== 'undefined') {
  words[splitted[i]] = 0
}
words[splitted[i]]++;

当定义单词[splitted[i]]时,您的代码以更简单的形式可能会产生这种形式的代码:

x = x++;
x++返回x的值,然后递增,然后设置返回给x的值。这与

x = ++x;
其中x先递增,然后求值

要了解其工作原理,请查看以下代码:

x = 1;
y = 1;
z = 1;
x = x++;
y = ++y;
z = z += 1;
alert(x); // 1
alert(y); // 2
alert(z); // 2
在任何情况下,我认为你真正想做的是以下几点:

(typeof words[splitted[i]] !== 'undefined') ? 
    words[splitted[i]]++ : 
    words[splitted[i]] = 1;
这是更多的行,但可能更可读:

if (typeof words[splitted[i]] !== 'undefined') {
  words[splitted[i]] = 0
}
words[splitted[i]]++;
,-检查++运算符部分

x=++y -> x=6, y=6
x=y++ -> x=5, y=6
,-检查++运算符部分

x=++y -> x=6, y=6
x=y++ -> x=5, y=6

@普拉文:我留下了一个有效的……A?因为我不知道它的存在。但我最喜欢的是:-这种混乱是Douglas Crockford建议不要使用前/后增量的原因。因此,它在jslint中给您一个警告。您可以使用:words[splitted[i]]=typeof words[splitted[i]!='未定义的'?单词[splitted[i]]+1:1在这种情况下,对吗?@Praveen:我留下了一个有效的…A?因为我不知道它的存在。但我最喜欢的是:-这种混乱是Douglas Crockford建议不要使用前/后增量的原因。因此,它在jslint中给您一个警告。您可以使用:words[splitted[i]]=typeof words[splitted[i]!='未定义的'?words[splitted[i]]+1:1在本例中,对吗?所以words\u counter++与words\u counter=++words\u counter;:-那么区别是什么呢?那么words_counter++和words_counter=++words_counter;:-那么有什么区别呢?如果我把++移到单词[splitted[I]]之前,它就可以工作了。谢谢。如果我把++移到单词[splitted[I]]之前,它就可以工作了。非常感谢。