Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

JS: существует таблица неявного приведения типов?

#javascript #nodejs #веб_программирование #типы


Привет!

Существует таблица неявного приведения типов или где правильные ответы смотреть?

Пример:

[1] + [2] - [3]
= 9


или:

{} + {}
= "[object Object][object Object]"

    


Ответы

Ответ 1



Правильные ответы есть в спецификации. В примерах в вопросе нужно смотреть операции сложения и вычитания. Как видно из алгоритма, в случае сложения сначала операнды приводятся к примитивному типу, с помощью вызова внутренней функции ToPrimitive (алгоритм ToPrimivite можно также увидеть в ответе на вопрос В чем разница между valueOf и toString) Далее, если хотя бы один из операндов строка - производится сложение строк. В противном случае, операнды приводятся к числу и выполняется сложение чисел. В случае с вычитанием - операнды сразу приводятся к числу. Рассмотрим первый пример из вопроса: [1] + [2] - [3] Происходит вычисление [1] + [2]. операнды приводятся к примитивному типу, для массивов - это равносильно вызову ToString, следовательно: [1]+[2] -> "1"+"2" складываются строки: "1"+"2" = "12" Происходит вычисление "12" - [3]. Операнды приводятся к числам: "12" -> 12, [3] -> "3" -> 3 вычитание: 12 - 3 = 9

Комментариев нет:

Отправить комментарий