我刚刚遇到了这个:
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.