Это то, что я обычно пишу для петли.
for (var i = 0; i <20; i ++) {....}Но я думаю, что некоторые люди пишут это
для (var i = 0; i <20; ++ i) {..}Какое влияние это окажет на петлю?
1. кажется, что нет никакой разницы в ...
Но при использовании в задании есть разница ...
var a = 1; var b = a ++; var c = 1; var d = ++ c; console.log (b, d); // 1, 2
A ++ должен применить сначала, а затем добавить его самостоятельно
++ a должен добавить его сначала, а затем применить
2. Это, вероятно, привычка, принесенная эпохой C/C ++. Легенда гласит, что ++ I быстрее, чем i ++, но на самом деле производительность этих двух аналогична JS.
Что касается конкретных деталей, спецификация написана следующим образом:
Для ситуации впереди -
UnaryExpression: ++ UnaryExpressionlet Expr является результатом оценки UnaryExpression. Дайте OldValue тонумбер (getValue (expr)). Returnifabroupt (OldValue). Дайте новое значение, чтобы добавить значение 1 к OldValue, используя те же правила, что и для + оператор (см. 12.7.5). Ifabroupt (status). Return newvalue.
Грубый перевод:
1. Пусть Expr равна результату текущего выражения (то есть после ++)
2. Пусть OldValue равен результату Expr, преобразованного в число
3. Используйте те же правила, что и оператор « +», пусть NewValue = OldValue + 1
4. Назначьте NewValue на эксплу
5. Вся операция возвращает NewValue
Для ситуации, стоящей за ней -
Postfixexpression: LefthandsideExpression ++
1. Дайте LHS результат оценки левой, снятой экспрессии.
2. Дайте OldValue тонумбер (GetValue (LHS)).
3. returnifabroupt (OldValue).
4. Давайте не становятся результатом добавления значения 1 в OldValue, используя те же правила, что и для оператора + (см. 12.7.5).
5. Статус давайте быть путем (LHS, NewValue).
6. returnifabrupt (статус).
7. вернуть OldValue.
Грубый перевод -
1. Пусть LHS равна результату текущего выражения (предыдущая часть ++)
2. Пусть OldValue равна LHS для преобразования результата числа
3. Используйте те же правила, что и оператор « +», пусть NewValue = OldValue + 1
4. Назначьте NewValue на LHS
5. Вся операция возвращает OldValue
Видно, что разница между ними является только последним шагом. Возвращается ли вся операция после добавления одной или до добавления.
Для заявления для:
для (var i = 0; i <n; i ++)
Последний столбец просто самооплачивается и никому не назначает это значение, поэтому с этой точки зрения, то же самое для символов ++, которые должны быть размещены спереди или после.
3. На самом деле, нет большой разницы. Но если вы хотите продолжить эту небольшую эффективность, ++, я действительно буду более эффективным.
Это действительно из стандартной библиотеки STD C ++. Когда я итератор контейнера STD, я не является числом, I ++ будет генерировать дополнительную операцию назначения, поэтому ++ I имеет более высокую производительность. Поэтому люди, которые привыкли к C ++, любят использовать ++ I, чтобы сэкономить деньги, когда я не является численным ценностью.
Вышеуказанное разница между I ++ и ++ I в JS для цикла, введенная вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!