JS:i++ 及其工作原理
JS: i++ and how it works
我大约一周前开始学习 Javascript,现在我正在努力学习前缀和后缀增量。有人可以在这段代码中向我解释原因吗:
let i = 0;
const x = i++;
console.log(x);
console.log(i);
为什么在这段代码中执行 console.log(i);是 1 而不是 0?
console.log(x);输出为 0 我想我知道为什么,但我真的无法理解 i.
值背后的逻辑
预先感谢您的帮助:)
因为你使用了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
然后 console.log(x)
将输出 1,与 console.log(i)
相同。阅读 this 了解更多信息。
"increment" 运算符至少可以追溯到 70 年代的 C 编程语言,在递增或递减之前或之后从存储中提取值的基本思想来自低级计算机体系结构.
递增(加1)和递减(减1)都有两种变体。 pre-increment 和 pre-decrement 操作,其中 ++
或 --
出现在变量之前,更容易理解:改变了变量中的值,然后结果就是新的值。
post-increment和post-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
我大约一周前开始学习 Javascript,现在我正在努力学习前缀和后缀增量。有人可以在这段代码中向我解释原因吗:
let i = 0;
const x = i++;
console.log(x);
console.log(i);
为什么在这段代码中执行 console.log(i);是 1 而不是 0?
console.log(x);输出为 0 我想我知道为什么,但我真的无法理解 i.
值背后的逻辑
预先感谢您的帮助:)
因为你使用了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
然后 console.log(x)
将输出 1,与 console.log(i)
相同。阅读 this 了解更多信息。
"increment" 运算符至少可以追溯到 70 年代的 C 编程语言,在递增或递减之前或之后从存储中提取值的基本思想来自低级计算机体系结构.
递增(加1)和递减(减1)都有两种变体。 pre-increment 和 pre-decrement 操作,其中 ++
或 --
出现在变量之前,更容易理解:改变了变量中的值,然后结果就是新的值。
post-increment和post-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