console.log中的增量更改变量的值



我刚刚遇到了这个:

let a = 1;
console.log(a++);
console.log(a); // 2

我试图了解console.log中"a"的值是如何变化的。

在一条评论中,您说过:

我知道[a++就是a = a + 1],但我不知道这可以在console.log中完成

调用console.log就像调用任何其他函数一样。foo(a++)会做完全相同的事情:

  • 首先,将a的值留作将来使用
  • 然后添加1,更新a
  • 然后将来自步骤1的a的旧值传递给foo(或console.log(

(这是因为你使用了后缀增量。如果你使用了前缀增量[++a],函数会收到更新的值,而不是旧的值。(

console.log并不特别,它只是大多数环境(浏览器、Node.js(为代码提供的预定义函数。如果在其参数列表中执行副作用(如a++(,则会出现这些副作用。

a++就像在控制台外运行它一样。log((它只是向添加+1

let a = 1;
console.log(a++);
console.log(a); // 2
a++
console.log(a); // 3

a++相当于在计算变量a之后发生的a = a + 1

因此,console.log语句得到1,然后a递增:

你的代码也可以这样写,++只是更短:

let a = 1;
console.log(a);
a = a + 1;
console.log(a); // 2

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators

下面的示例显示了在字符串中递增计数器的两种方法。

请注意第一个输出中斜线前的空格。

let i = 0;
let docNum = 10;
console.log('Document', i+1, '/' + docNum + '.')
// Document 1 /10.
console.log('Document ' + parseInt(i+1) + '/' + docNum + '.')
// Document 1/10.

最新更新