JavaScript это динамически типизированный язык. Это означает, что Вы не должны специфицировать тип данных переменной при её объявлении и что типы данных при необходимости автоматически конвертируются в процессе выполнения скрипта. Так, например, Вы можете определить переменную:
var answer = 42
и позднее можете присвоить этой же переменной строковое значение:
answer = "Thanks for all the fish..."
Поскольку JavaScript типизируется динамически, такое присвоение не является ошибкой.
В выражениях, содержащих числа и строки и операцию +, JavaScript конвертирует числа в строки. Например:
x = "The answer is " + 42 // возвращает "The answer is 42"
y = 42 + " is the answer" // возвращает "42 is the answer"
В выражениях с использованием других операций, JavaScript не конвертирует числа в строки. Например:
"37" - 7 // возвращает 30
"37" + 7 // возвращает 377