@fleshik

Почему forEach выдает разные результаты?

подскажите почему при работе цикла forEach в этих двух примерах
const array1 = [{a: 1}, {a: 2}, {a: 3}];
array1.forEach(a => {
   a.a++
})

const array2 = [{a: 1}, {a: 2}, {a: 3}];
array2.forEach(a => {
   a.a+1
})

в первом примере console.log(array1) мы получаем [{a: 2}, {a: 3}, {a: 4}], а во втором ничего не меняется почему не работает a.a+1
Если можно объясните подробно как работают эти примеры
  • Вопрос задан
  • 143 просмотра
Решения вопроса 2
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
если коротко и не совсем корректно, то
a++ это a = a + 1
a+1 это ничего. Потому что нет присваивания.

P.s. не совсем корректно потому что
a++ не то же самое что a = a+1, потому что a++ вернёт текущее значение а потом его инкрементирует:
var a = 1;
console.log(a++) // 1
// тут же ещё раз выводим а без инкремента\сложения
console.log(a) // 2
a = a +1
console.log(a) // 3
Ответ написан
Stalker_RED
@Stalker_RED
a.a+=1 сработает.
Вы в первом случае меняете значение a.a (больше однобуквенных названий, давайте добавим в мире путаницы!)
во втором просто складываете его значение с единицой и никуда это значение не применяете.
let x = 3 // x=3
x++ // x=4 инкремент
let y = x + 1 // y=5, x=4 все еще 
x += 2 // x=6
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы