Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему именно такое решение приемлемо:console.log('7' - (-8 - -2)); Как происходят действия по шагово JavaScript

Геогрий Мерц Ученик (190), открыт 2 недели назад
Почему именно такое решение приемлемо:console.log('7' - (-8 - -2)); => 13 Как происходят действия по шагово, а в таком примере console.log(1 + '7'); // => 17 все иначе
JavaScript
1 ответ
Андрей Высший разум (460590) 2 недели назад
Операндами бинарной операции '-' могут быть только числа, потому при вычитании строка '7' автоматически преобразуется в число 7.

Если одним из операндов бинарной операции '+' является строка, эта операция трактуется не как сложение чисел, а как конкатенация (склеивание) строк и второй операнд автоматически преобразуется в строку: число 1 превращается в строку '1' и на выходе получаем строку '17'.

На эти грабли наступают все. В отношении правил автоматического преобразования типов JavaScript - худший среди популярных языков.

P.S. Унарная операция '+' автоматически преобразует строку в число. Так что если ты напишешь:
 console.log(1 + +'7'); // пробел между этими плюсами обязателен 
, то получишь ожидаемое тобой 8.

И такое тоже сработает:
 console.log(+'7' + 8 - 2); 
Похожие вопросы