Javascript i + + vs + + i

在 javascript 中,我看到了 i++在许多情况下的使用,我知道它为前面的值增加了一个值:

for (var i=1; i<=10; i++) {
console.log(i);
}

但是当我这样做的时候会发生什么:

++i;

使用 --运算符有什么不同吗(当然除了它是减法而不是加法之外) ?

122972 次浏览

++variable递增变量,返回新值。

variable++递增变量,但返回旧值。

--variable递减变量,返回新值。

variable--递减变量,但返回旧值。

例如:

a = 5;
b = 5;
c = ++a;
d = b++;

a是6,b是6,c是6,d是5。

如果不使用结果,则前缀运算符与后缀运算符的工作方式相同。

var i = 0;
console.log(i++); // 0
console.log(++i); // 2

它确定增量是在使用变量值之前还是之后发生。

var j = 2;
console.log(j++);   // 2
console.log(j);     // 3


var k = 2;
console.log(++k);   // 3
console.log(k);     // 3

i++++i之间的差异是表达式的值。

i++是增量之前的 i值。++i的值是增量后 i的值。

例如:

var i = 42;
alert(i++); // shows 42
alert(i); // shows 43
i = 42;
alert(++i); // shows 43
alert(i); // shows 43

i----i运算符的工作方式相同。

i++ = 在语句中使用 i 的值,然后将其增加1
将 i 的值增加1,然后在语句中使用。

为了完整起见,我想对 OP 的第一个问题添加一个特定的答案:

您的一个示例显示了在 for 循环中使用的 i + +/+ + i:

for (i=1; i<=10; i++) {
alert(i);
}

无论你使用哪种方法,你都会得到1-10个提醒。例如:

  console.log("i++");
for (i=1; i<=10; i++) {
console.log(i);
}
console.log("++i");
for (i=1; i<=10; ++i) {
console.log(i);
}

将它们粘贴到控制台窗口中,您可以看到它们都具有相同的输出。

所有这些答案都没有提到的一种情况是,当 i++++i与其他数字一起运算时会发生什么。虽然整个“ ABC0在前,++i在后”概念在表达式本身时很容易理解,但是当您开始组合语句时,它会变得更加混乱。见下面的例子 C 和 D。

// Example A
var i = 42;
var a = i++; // equivalent to `var a = i; i = i+1;`
console.log(a); // 42
console.log(i); // 43


// Example B
var i = 42;
var b = ++i; // equivalent to `i = i+1; var b = i;`
console.log(b); // 43
console.log(i); // 43


// Example C
var i = 42;
var c = i++ * 2; // equivalent to `var c = i*2; i = i+1;`
console.log(c); // 84
console.log(i); // 43


// Example D
var i = 42;
var d = ++i * 2; // equivalent to `i = i+1; var d = i*2;`
console.log(d); // 86
console.log(i); // 43

请注意,在示例 C 中,直到 之后乘法和 c的赋值时才计算 i++。这反驳了“应该按照操作顺序首先计算 i++”的误解所以换句话说,语句 i++ * 2实际上计算 i * 2 之前它增加 i

++variable: 在使用变量之前增加变量
variable++: 使用变量后增加变量

我认为在答案中包含一个片段来确认它们在 for循环中的行为是有用的。

只是为了在浏览器中验证在 for 循环声明中使用 ++i和使用 i++是否真的没有区别。

同时抛出 --ii--

console.log("-- with looping --");


console.log("using ++i in a for loop");
for (var i=1; i<=3; ++i) {
console.log(i);
}


console.log("using i++ in a for loop");
for (var i=1; i<=3; i++) {
console.log(i);
}


console.log("using --i in a for loop");
for (var i=3; i>=1; --i) {
console.log(i);
}


console.log("using i-- in a for loop");
for (var i=3; i>=1; i--) {
console.log(i);
}


console.log("-- without looping --");
var i = 1;
console.log("i: "+ i);
console.log("i++: "+ i++);
console.log("i: "+ i);
console.log("++i: "+ ++i);
console.log("i: "+ i);
console.log("--i: "+ --i);
console.log("i: "+ i);
console.log("i--: "+ i--);
console.log("i: "+ i);