Разница между p ++ и ++ p при использовании в цикле for Javascript - PullRequest
4 голосов
/ 19 мая 2019

Это может быть очень наивный тупой вопрос, но какова разница в выходе из следующих двух условий:

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 или если этоИмеет значение, как это повлияет на мою программу.

Может кто-нибудь объяснить, пожалуйста.

Спасибо

Ответы [ 7 ]

3 голосов
/ 19 мая 2019

Если вы не используете значения, после использования до и после исправления, нет абсолютно никакой разницы. (кроме выступления)

Выполнение чего-либо подобного ведет себя иначе, как вы можете видеть:

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

console.log(arr[++b]);
console.log(arr[b++]);
console.log(arr[b]);
2 голосов
/ 19 мая 2019

Поскольку вы никому не присваиваете выражение, нет никакой разницы, кроме небольшого прироста производительности в преинкрементаторе (поскольку создается временная переменная для хранения нескольких значений 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 - буквально без разницы, производительностьили иначе.Это означает, что на самом деле быстрее .

2 голосов
/ 19 мая 2019

В этом случае нет никакой разницы, поскольку вы не используете значение выражения.

1 голос
/ 19 мая 2019

В этом случае нет разницы в приращении до и после. Однако в некоторых случаях подобное может быть значительным:

здесь 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

1 голос
/ 19 мая 2019

В вашем примере нет разницы.Однако, если вы используете операторы increment ++ или increment - внутри функции, позиционирование будет значительным.Процитирую статью
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 и т. Д.)

Почему бы избежать операторов увеличения («++») и уменьшения («-») в JavaScript?

1 голос
/ 19 мая 2019

++ p сначала он посчитает +1, а затем вернет результат
p ++ вернет значение и затем добавит + 1

Значение

p будет отличаться at the end of each turn в этих двух случаях.

1 голос
/ 19 мая 2019

Если вы поставите два плюса впереди или после того, как переменная / число изменяет его только для оценки.

Поскольку счетчик увеличивается только после выхода из блока.Если это сделано до или после, не имеет значения.В конце разговора номер увеличивается одинаково.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...