Script language javascript: Атрибут language | htmlbook.ru

Почему JavaScript называют «языком сценариев»?

спросил

Изменено 3 года, 11 месяцев назад

Просмотрено 40 тысяч раз

Как следует из названия, я хочу знать точную причину, по которой JavaScript называют «языком сценариев»?

Насколько я понимаю, JavaScript интерпретируется только браузером (а не компилируется). Поправьте меня если я ошибаюсь.

Но если нет компиляции, то почему 0 == '' верно? Разве компилятор не принуждает значения, или это механизм JavaScript…? Я немного смущен.

  • javascript
  • сценарии

Думаю, первые два предложения из Википедии достаточно ясны:

Язык сценариев, язык сценариев или язык расширения — это программирование язык, который позволяет в некоторой степени управлять одно или несколько программ Приложения).

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

В данном случае приложение — это браузер. А по поводу компиляции:

Скрипты часто, но не всегда интерпретируется из источника код или «полукомпилированный» в байт-код который интерпретируется, в отличие от приложения, с которыми они связаны, которые традиционно компилируются в родной машинный код для системы на которые они запускают

О том, что 0 равно '' , приведение не обязательно осуществляется компилятором; все дело в движке JavaScript во время выполнения.

Мне жаль брать все из Википедии, но это так ясно, и я поставил его в кавычки

PS: Я считаю, что это тоже стоит вставить:

Многие люди просматривают «скриптовые» языки хуже или как-то иначе, чем языки, которые не достигли популярность на сценарной сцене.

Как ни странно, эти же языки были тщательно выбран для сценариев из-за Их качество и универсальность.

3

Обновление на 2017 год

«Языки сценариев очень похожи на непристойности. Я не могу дать этому определение, но узнаю, когда увижу.» — Ларри Уолл

Для целей этого ответа давайте предположим, что это означает язык, который:

  1. лишен некоторых особенностей «настоящего» языка (что бы это ни значило), поэтому наиболее полезен в качестве «клея» между другими компонентами в система и
  2. интерпретируется, а не компилируется.

В какой-то момент Javascript действительно считался языком сценариев с базовыми функциями для управления DOM, выполнения проверки формы и танца Иисуса. Он был выполнен интерпретатором непосредственно из исходного кода.

Но JS значительно повзрослел за последние несколько лет, с такими расширенными функциями, как лямбда-выражения, классы (к лучшему или к худшему), деструктуризация, итераторы и модули, которые доводят его возможности до уровня большинства других современных языков. Он больше не ограничен браузером, он также часто работает автономно на сервере под NodeJS.

Javascript теперь универсально JIT-компилируется либо в байт-код (например, Java и C#), либо непосредственно в машинный код (например, C и C++). А современные движки предлагают фазу оптимизации, аналогичную большинству традиционных компилируемых языков.

V8 (хром, узел)

V8 компилирует JavaScript непосредственно в собственный машинный код перед его выполнением.

Код чакры (грань)

Chakra Core [может] делать параллельную JIT-компиляцию…

SpiderMonkey (Firefox)

SpiderMonkey 38 включает JIT-компилятор, который компилирует JavaScript в машинный код…

Следовательно, если современный JS считается языком сценариев , то то же самое должно относиться и к большинству других языков, не являющихся «сценарными».

1

Вы частично правы. Язык сценариев — это, по сути, язык, который не существует сам по себе; он «скриптует» другое приложение (в данном случае браузер). Я думаю, что вы думаете о интерпретируемый язык

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

2

Чтобы понять, почему JavaScript является языком сценариев? Во-первых, мы понимаем, почему Java не является языком сценариев.

Я думаю, что Сценарий означает письменный текст проекта, пьесы и т. д., который читается игроками напрямую, без интерпретатора между игроком и Сценарием.

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

вывод в браузере, браузер работает как плеер.

Но Java требует компилятора и интерпретатора для преобразования написанного кода Java в машиночитаемый формат и отображения вывода. Итак, Java — это не язык сценариев, а JavaScript — это язык сценариев.

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

1

Идея языка сценариев заключается в том, что он инструктирует хост выполнить ряд действий (очень похоже на то, как актер читает сценарий).

Javascript сообщает браузеру, что делать и как обрабатывать вещи точно так же, как это делает сценарий оболочки, php или любой другой язык сценариев для соответствующих хостов.

1

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

Это означает:

  • интерпретируется при запуске, не компилируется
  • Предоставляется ограниченный доступ к системе, обычно через определенный API
  • Обычно ему даются только вызовы API, которые помогают ему достичь своей цели, и ничего более (хотя можно использовать сторонние дополнения)

2

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

html — тег против тега

Задавать вопрос

спросил

Изменено 3 года назад

Просмотрено 139 тысяч раз

Мне просто интересно, в чем разница между

и
  

В HTML 5 атрибут type является необязательным и по умолчанию равен текст/javascript

Используйте