在for循环Javascript中使用p ++和++ p的区别

时间:2019-05-18 22:04:23

标签: javascript loops

这可能是一个非常幼稚的愚蠢问题,但是以下两个条件的输出有什么区别:

for (var p=0; p<3; p++) {console.log(p)}
//outputs:
0
1
2


for (var p=0; p<3; ++p) {console.log(p)}
//outputs:
0
1
2

'p'结果输出到相同的输出中,而不管我是先增加该值,然后打印还是反之。我也确实了解(p ++)和(++ p)之间的区别,但是在这种情况下,我无法理解在循环中的这一点是否会引起任何区别(如果我是2步还是执行2步)确实对我的程序有何影响。

有人可以解释吗?

谢谢

7 个答案:

答案 0 :(得分:3)

如果不使用值,则在使用前缀和后缀之后,绝对没有任何区别。 (根据性能)

这样做,行为会有所不同,如您所见:

var a = 0;
var b = 0;
var arr = [0,1,2];

console.log(arr[++b]);
console.log(arr[b++]);
console.log(arr[b]);

答案 1 :(得分:2)

在这种情况下,没有任何区别,因为您没有使用表达式的值。

答案 2 :(得分:2)

由于您没有将表达式分配给任何内容,因此除了预递增器的性能有所提高外,没有其他区别(因为创建了一个临时变量以便将p的多个值与后递增器)。 JSBEN.CH

只是您知道它们之间的区别:

let var1 = 3;
let var2 = 4;

console.log(var1++); //Outputs the value of var1, then increments it
console.log(++var2); //Increments the value of var2, then outputs it

在这种情况下,+=语法实际上更好,因为它更易于阅读,并且只是p = p + 1的压缩-从本质上来说,无论从性能还是其他方面都没有区别。这意味着它实际上是faster

答案 3 :(得分:1)

如果您将两个加号放在前面或后面,则变量/数字只会对其求值有所不同。

因为仅在离开块后计数器增加才是重要的。如果在此之前或之后执行此操作无关紧要。通话结束时,电话号码会平均增加。

答案 4 :(得分:1)

++ p首先它将计数+1,然后返回结果
p ++,它将返回值,然后添加+1

在这两种情况下,

p值将at the end of each turn不同。

答案 5 :(得分:1)

在您的示例中没有区别。 但是,如果您在函数内使用++或递减-运算符,则定位很重要。引用文章
JavaScript Increment ++ and Decrement --

如果操作数在变量console.log之后显示 a ,则它会递增

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

如果操作数位于变量 a 之前,则console.log将其显示

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

C和C ++等其他几种语言也具有相同的行为。

但是,这些操作员必须小心使用。请参阅以下stackoverflow答案(尽管它引用JavaScript,但也适用于C等)

Why avoid increment (“++”) and decrement (“--”) operators in JavaScript?

答案 6 :(得分:1)

在这种情况下,前后增量没有差异。 但是,在某些情况下可能很重要:

这里先评估n和i,然后再递增

var n=0
var i
for(i=0;n<5;n=i++){}

在循环n之后,我看起来像这样:n = 5,i = 6

在这里先评估n和i,但是在进入循环之前i会递增

var n=0
var i
for(i=0;n<5;n=++i){}

在循环n之后,我看起来像这样:n = 5,i = 5