Почему Javascript только приведение типов для конкатенации строк на строки, которые уже назначены? - PullRequest
0 голосов
/ 04 ноября 2019

Я заметил нечто странное, когда возился со строками и числами в консоли Javascript. Делая это:

"$99.9" += 0

вызывает SyntaxError: Invalid left-hand side in assignment. Но если я назначу строку для переменной, поведение будет другим (и в большей степени соответствует тому, что мы привыкли ожидать от Javascript):

let str = "$99.9"

str += 0// => "$99.90"

Я знаком с тем, что вызывает поведение во втором примере (и что вызывает так много других событий Javascripty), но ошибка в первом примере меня удивила. Что происходит в первом примере этого, что останавливает обычное поведение Javascript?

1 Ответ

2 голосов
/ 04 ноября 2019

потому что вы можете назначить значение только переменной. В вашем случае вы пытаетесь присвоить значение строке. Litterally. Оператор += переводится в variable = variable + 0. В вашем случае это означает следующее: "$99.9" = "$99.9" + 0 и «$ 99,9» не является ни переменной, ни допустимым именем переменной.
Во втором случае вы присваиваете значение «$ 99,9» переменной THEN используя оператор += для изменения значения переменной.

...