JavaScript - нетипизированный язык. Вам не надо указывать тип данных при объявлении переменных. Но, тем не менее, типы данных как таковые в JavaScript существуют, и это надо учитывать, когда вы используете операторы с переменными определённых типов или с выражениями, которые возвращают определённый тип. И различные операторы требуют, чтобы операнды возвращали значения определённого типа.
Например, нельзя умножать строки:
"F" * "A"
Такое выражение не является допустимым. Хотя в современных браузерах ошибки не произойдет. Это выражение, скорее всего, вернёт значение NaN. Но всё равно так делать не следует.
В то же время интерпретатор JavaScript по мере своих сил пытается преобразовать любое выражение в правильный тип. Поэтому вот такое выражение:
"5" * "3"
является вполне допустимым. Здесь строки будут преобразованы в числа, а затем будет выполнено умножение. А итогом применения оператора * будет уже не строка, а число (в данном примере 15). См. также преобразование числа в строку.
Некоторые операторы ведут себя по разному в зависимости от того, с какими типами данных они используются. Например, оператор + складывает два числа в случае с числами, и выполняет конкатенацию (объединение) строк в случае со строками. Если же использовать его с операндами разных типов, то он вернёт строковое значение. При этом нестроковый операнд будет преобразован в строку:
"5" + 10
Результатом будет строка 510.
"Логика " + (10 == 10)
Результатом будет строка “Логика true”.
Также операторы не всегда возвращают значения того же типа, к которому принадлежат операнды. Например, операторы сравнения (больше, меньше, равно и т.д.) могут работать с числами, строками и другими типами. А возвращают всегда логический тип.
На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.