大约一周前,我已经开始学习Javascript,现在我正为前缀和postifx增量而苦苦挣扎。有人可以向我解释为什么在此代码中吗:
let i = 0;
const x = i++;
console.log(x);
console.log(i);
为什么在执行console.log(i)之后使用此代码?是1而不是0?
console.log(x);输出为0,我想我知道为什么,但是我真的无法理解i值背后的逻辑。
预先感谢您的帮助:)
答案 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