В javascript я видел, что i++
используется во многих случаях, и я понимаю, что он добавляет одно к предыдущему значению:
for (var i=1; i<=10; i++) {
console.log(i);
}
В javascript я видел, что i++
используется во многих случаях, и я понимаю, что он добавляет одно к предыдущему значению:
for (var i=1; i<=10; i++) {
console.log(i);
}
Разница между 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
работают одинаково.
++variable
увеличивает значение переменной, возвращая новое значение.
variable++
увеличивает значение переменной, но возвращает старое значение.
--variable
уменьшает значение переменной, возвращая новое значение.
variable--
уменьшает значение переменной, но возвращает старое значение.
Например:
a = 5;
b = 5;
c = ++a;
d = b++;
a
равно 6, b
равно 6, c
равно 6 и d
равно 5.
Если вы не используете результат, операторы префикса работают одинаково с операторами postfix.
i++
= Используйте значение я в выражении, затем увеличьте его на 1 ++i
= Увеличить значение я на 1, затем использовать в инструкции.
Я думал о полноте, я бы добавил ответ, свойственный первому из вопросов OP:
Один из ваших примеров показывает, что я ++/++ я используется в цикле for:
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);
}
Вставьте их в окно консоли, и вы увидите, что оба они имеют одинаковый вывод.
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
после" концепции легко понять, когда выражение само по себе, оно становится намного более запутанным, когда вы начинаете комбинировать утверждения. См. Ниже примеры C и D.
// Example A
var i = 42;
var a = i++; // equivalent to `var a = i; i++;`
console.log(a); // 42
console.log(i); // 43
// Example B
var i = 42;
var b = ++i; // equivalent to `i++; 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++;`
console.log(c); // 84
console.log(i); // 43
// Example D
var i = 42;
var d = ++i * 2; // equivalent to `i++; var d = i*2;`
console.log(d); // 86
console.log(i); // 43
Обратите внимание, что в примере C i++
не оценивается до умножения и назначения c
. Это учитывает ошибочное представление о том, что "i++
следует оценивать сначала в порядке операций". Таким образом, оператор i++ * 2
фактически вычисляет i * 2
до того, как он увеличит i
.
Я знаю, на этот вопрос 2011 года уже был дан ответ.
++ variable: переменная приращения перед использованием переменной
variable ++: переменная Increment после использования переменной
Но я полагал, что все же может быть полезно включить ответ со сниппетом, чтобы подтвердить, как они ведут себя в цикле for.
Просто чтобы проверить в вашем браузере, что на самом деле нет никакой разницы при использовании ++ я по сравнению с я ++ в декларации цикла for.
И бросать -i против i-- пока мы на нем.
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);