JS:i ++及其运作方式

时间:2019-02-12 19:51:27

标签: javascript operators increment decrement

大约一周前,我已经开始学习Javascript,现在我正为前缀和postifx增量而苦苦挣扎。有人可以向我解释为什么在此代码中吗:

let i = 0;  
const x = i++;  
console.log(x);  
console.log(i);    

为什么在执行console.log(i)之后使用此代码?是1而不是0?
console.log(x);输出为0,我想我知道为什么,但是我真的无法理解i值背后的逻辑。
预先感谢您的帮助:)

2 个答案:

答案 0 :(得分:0)

这是因为您使用了i++。如果您的代码是

let i = 0;  
const x = i+1;  
console.log(x);  
console.log(i);

然后console.log(i)将输出0,因为i = 0
现在,增量运算符++将变量的值加1,但这取决于位置。
当您完成const x = i++时,它转换为x的值i,然后将i加1,如果您会完成const x = ++i然后{{1} }会输出1,与console.log(x)相同。阅读this了解更多信息。

答案 1 :(得分:0)

“递增”运算符至少可以追溯到70年代的C编程语言,在低级计算机体系结构中,在递增或递减之前或之后从存储中提取值的基本思想是这样的。

对于增量(加1)和减量(减1),都有两个变体。易于理解的 pre-increment pre-decrement 操作(其中++--位于变量之前):更改变量,然后结果是新值。

后递增后递减操作很奇怪,因为您获得的值是之前加或减的值1.之后,变量中的值仍会像预递增或递减一样进行更改,但是上下文中的是更改前的值。

因此:

var x = 0;
console.log(++x); // logs 1, pre-increment
console.log(x--); // also logs 1, post-decrement
console.log(x);   // logs 0, because of the decrement