Там де є i там є маленька, але важлива відмінність між ++i та i++, що може завдати достатньо головного болю, якщо не бути обережним. Спробуйте це:
var i = 5;
i++;
console.log(i); //=> 6
++i;
console.log(i); //=> 7
Як і очікувалось, обидві версії інкерментують і. Різниця з'являється тоді, коли вирази реально щось виконують. Якщо ми внесемо маленьку зміну, ми отримаємо кардинально інший результат:
var i = 5;
console.log(i++); //=> 5
console.log(i); //=> 6
Це означає, що значення і не актуальне доки не виконається console.log()
. Це може бути особливо каверзним якщо ви робите порівняння:
var i = 5;
console.log(++i === i++) //=> false
З іншого боку, ++i виконується перед тим, як будь яка операція його викличе:
var i = 5;
console.log(++i)// => 6
Тож що робити? Не використовуйте обидва! Використовуйте i += 1
. Його поведінка більш передбачувана і ви не сплутаєте його ні з чим іншим!
Ще немає коментарів