Что означает, что JavaScript является "динамическим"?

Я читал из разных источников (например, вики, статьи и т. Д.), Что означает динамика в смысле программирования. Википедия рассказывает о том, как динамические языки программирования выполняют определенные режимы программирования во время выполнения (в отличие от времени компиляции для статических языков), но их объяснение расплывчато и говорит о том, как эти поведения различаются по степени сложности, сложности и затратам производительности для всех языков программирования.,

Что касается конкретно JavaScript, что это означает, что он динамический?

Я могу быть совершенно неправ в этом, но также понимаю, что JavaScript - это язык с динамической типизацией, поскольку у вас нет состояния типа до создания экземпляра переменной / функции (например, var, function jsFunction()), а не статически типизированного языка, такого как Java, где вы определяете тип перед созданием переменной / функции (например, int var, public int function()).

Это как-то связано с этим?

2 ответа

Решение

У большинства языков есть некоторый аспект динамического поведения. Даже статически типизированные языки могут иметь динамический или вариантный тип данных, который может содержать разные типы данных.

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

Все переменные являются динамическими (как по типу, так и по существованию), и даже код является динамическим. Вы можете создавать новые переменные во время выполнения, а тип переменных определяется во время выполнения. Вы можете создавать новые функции в любое время или заменить существующие функции. При использовании в браузере код добавляется, когда загружается больше файлов сценариев, и вы можете загружать больше файлов в любое время.

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

Наиболее значимым, четко определенным способом, которым JS является динамическим, является то, что он динамически типизирован: язык имеет типы данных, но не проверяет, что типы программы "в порядке", пока программа фактически не запущена. Противоположность статически типизирована, что означает, что типы программ проверяются программой, которая проверяет их исходный код перед запуском. (Например, Java и ML статически типизированы.)

Другие вопросы по тегам