JavaScript

почему в javascript в функцию можно передавать параметры без типа?

function test(a, b)
{
console.log(a + b);
}

test (5, 2);

Просто привык что в C++ в параметрах функции нужно обязательно указывать их типы, а здесь даже var не надо указывать все и так работает, почему так?
У любого значения в JS есть тип... и у этих твоих переменных, он тоже есть изначально: undefined.
Это ты еще не знаешь, что у функции можно объявить неинициализированный аргумент, и вообще не передавать его - а он все равно будет, и при этом ничего не сломается))
Почему столько свободы? Потому что JS - динамический язык, что в сочетании с продуманной семантикой дает ему мощную универсальность, недоступную многим другим ЯП (а также, заставляет программиста думать, и создает причину для тупеньких неосиляторов этот язык ненавидеть).

Если хочешь строгие типы, то на JS есть надстройка (кагбэ диалект, но не совсем) - TypeScript называется. Там этими типами можно обмазываться, и... ну в общем, можно :D
Сергей Шолленберг
Сергей Шолленберг
96 936
Лучший ответ
Потому, что в JavaScript вообще невозможно задать типы параметров - никак. JS - язык с динамической типизацией: тип переменной определяется тем, какое значение присвоено этой переменной. Присвоили значение другого типа - тип переменной поменялся.

А если для переменной (не параметра) внутри функции не указать var / let / const, то будет не создание локальной переменной, а обращение к глобальной переменной с этим именем - что приводит к трудно обнаруживаемым ошибкам. И подобных граблей в JS очень много...
Сергей Уфимцев ну простейшие типы получается уже заданы, но они перегружены для разных типов (числового, строкового, булевого и т. п.), да? И явно взаимодействовать с ними никак нельзя
Сергей Уфимцев "если не указывать var / let / const, то будет обращение к глобальной переменной с этим именем"

Ну, я при объявлении функции получается не могу указать типы для ее параметров, и получается если где то окажется глобальная переменная с таким же именем то это приведет к ошибкам?
Потому что JS козлячий и требует нервов. Все динамическое и рой старых багов. Не ищи смысла в js используй да и все. Типы есть, их там как и везде, ну в 1с может меньше