@Kim_Soal

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

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

// c === 7

1) почему вообще так, ведь пре-инкремент жеж
2) почему не конкатенация ( не "52" ну или "53" )
3) почему "5"+++b // ошибка
  • Вопрос задан
  • 422 просмотра
Решения вопроса 2
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
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
пре-инкремент жеж

ага, щас

чтоб яснее было, что происходит, добавлю пробелов: a++ + b
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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