@Kim_Soal

Почему js ведет себя так?

a = "5";  
b = 2;  
c = a+++b;

// c === 7

1) почему вообще так, ведь пре-инкремент жеж
2) почему не конкатенация ( не "52" ну или "53" )
3) почему "5"+++b // ошибка
  • Вопрос задан
  • 775 просмотров
Решения вопроса 1
sankooo
@sankooo
Software Engineer
1) Эта строка:
c = a+++b;
выполняется как
c = a++ + b;
Т.е. здесь не преинкремент, а постинкремент, поэтому в результате получается 7

2) Потому что когда вы делаете инкремент строковой переменной, она преобразуется в число. И затем число суммируется с числом.

3) Оператор ++ неявно выполняет присваивание и не может перезаписать константу. То же самое будет для численных значений:
5++ // Uncaught ReferenceError: Invalid left-hand side expression in postfix operation
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект