Почему у введенного числа в input тип данных(typeof) -string?

Если введенное число в input имеет тип данных string, это означает, что значение, введенное пользователем, интерпретируется как строка, а не числовое значение.

JavaScript является языком со слабой типизацией, что означает, что значения переменных могут автоматически изменять свой тип данных в зависимости от контекста, в котором они используются.

Когда пользователь вводит значение в input на веб-странице, это значение считывается как строка (тип данных string). Вне зависимости от того, что пользователь вводит - число, букву или какую-либо другую информацию, JavaScript обрабатывает это введенное значение как строку.

JavaScript неявно выполняет преобразование к строке, чтобы сохранить все возможные значения, которые может ввести пользователь. Если значение в input было бы принято распознать как число, это могло бы вызвать ошибки, если пользователь ввел бы что-то отличное от числа.

Если вы хотите использовать введенное пользователем число в дальнейшем, вам понадобится преобразовать его в числовой тип данных, используя методы, такие как parseInt() или parseFloat(). Пример:

var inputNumber = document.getElementById('myInput').value; // получаем значение из input
var number = parseFloat(inputNumber); // преобразуем значение в тип данных number
console.log(typeof number); // выведет "number"

Таким образом, хотя значение, введенное пользователем, может являться числом, его тип данных будет представлен как string из-за слабой типизации JavaScript.