Предисловие
Цитата из книги JavaScript Advanced Programming, Fourth Edition: «От простых сценариев проверки ввода до мощного языка программирования — рост JavaScript
не был предсказан никем. Это достаточно просто, чтобы научиться использовать его за считанные минуты, и достаточно сложно, чтобы овладеть им могут потребоваться годы. Чтобы действительно научиться правильно использовать JavaScript
, важно понять его природу, историю и ограничения».
Интервьюер: Что такое
JavaScript
?
Me: em…
JavaScript
isJavaScript
... 👀
Представьте, если бы интервьюер спросил вас: «Что такое JavaScript?» Что бы вы ответили? Честно говоря, у меня на мгновение опустело, когда я услышал этот вопрос. Мы так долго изучаем фронтенд, что даже самый простой вопрос «Что такое JavaScript?» даже не может сразу сказать интервьюеру, что это такое. Сегодня мы поговорим о том, что вы можете сделать, когда интервьюер спросит вас, что такое JavaScript
, и что вы можете сделать, чтобы сказать как можно больше и произвести хорошее впечатление.
Какова должность JavaScript
?
1. JavaScript
— это скриптовый язык
Почему скриптовый язык? Давайте кратко рассмотрим историю появления JavaScript
. Короче говоря, в 1995 году Netscape представила язык сценариев на стороне клиента под названием JavaScript
для решения проблемы задержек связи между клиентом и сервером во время простой проверки формы на странице и имела в то время большой успех. Это было, когда Microsoft решила выделить больше ресурсов для IE, ориентируясь на JScript
, а затем Ecma
(Европейская ассоциация производителей компьютеров) представила ECMAScript
(произносится как «ek-ma-script»), международную стандартизацию двух языков, чтобы решить проблему сосуществования две версии.
Что может язык сценариев? Он может выполнять сложные функции в Интернете, включая управление DOM
элементами на странице, CSS
стилями, интерактивными картами, 2D/3D
анимациями, прокруткой видео и многим другим. JavaScript
является очень мощным и гибким в своей хост-среде, предоставляя разработчикам гораздо больше возможностей.
2. JavaScript
— язык со слабой типизацией
Это означает, что переменные могут быть неявно преобразованы в другой тип. Скрытое преобразование типов дает JavaScript
некоторую гибкость, но также увеличивает сложность правил и вероятность ошибок.
- Бинарный оператор
+
преобразует два операнда в строки, если только оба операнда не имеют числового типа. Это связано с тем, что+
также может использоваться для объединения строк. - Бинарный оператор
-
преобразует два операнда в числовой тип. - Унарные операторы, включая
+
и-
, преобразуют операнды в числа.
console.log(1 + '2' === '12') // true console.log('3' - '1' === 2) // true console.log(+'1' === 1) // true console.log(-'1' === -1) // true
3. JavaScript
имеет динамический тип
let a = 233 a = 'Bouncing iron eggs' console.log(a) // 'Bouncing iron eggs' eval("console.log('Bouncing iron eggs')") // 'Bouncing iron eggs'
4. JavaScript
однопоточный
JavaScript
необходимо взаимодействовать со страницей, манипулировать DOM
и т. д., и если он многопоточный, это может представлять очень сложную проблему синхронизации. Например, предположим, что JavaScript
имеет два потока одновременно, и один поток добавляет содержимое в узел DOM
, а другой поток удаляет его, какой поток должен выбрать браузер? Таким образом, это диктует, что он может быть только однопоточным.
5. JavaScript
Языки перевода
Интерпретируемый язык — это тип языка программирования. Это тип языка программирования, в котором код выполняется по одному предложению за раз, без необходимости его компиляции в машинный код компилятором, как в случае с скомпилированным языком.
6. JavaScript
хорошо кроссплатформен
Кроссплатформенные функции, поддерживаемые большинством браузеров, могут работать на широком диапазоне платформ (например, Windows
, Linux
, Mac
, Android
, iOS
и т. д.).
В чем разница между JavaScript
и ECMAScript
и как она связана с DOM
и BOM
?
Начнем с краткого обзора концепций ECMAScript
, DOM
и BOM
.
DOM
DOM
(объектная модель документа) предоставляет methods
и interfaces
для взаимодействия с содержимым веб-страницы. DOM
абстрагирует всю страницу в набор иерархических узлов. Каждый компонент страницы HTML
или XML
представляет собой своего рода узел, содержащий разные данные. DOM
позволяет разработчику управлять содержимым и структурой веб-страницы по своему усмотрению, создавая дерево, представляющее документ. Используя DOM API
, узлы можно легко удалять, добавлять, заменять и модифицировать.
<html> <head> <title>Sample Page</title> </head> <body> <p> Hello World!</p> </body> </html>
BOM
BOM
(объектная модель браузера) предоставляет methods
и interfaces
для взаимодействия с браузером. BOM
в основном для окон браузера и подокна (фреймов). Используя BOM
, разработчики могут манипулировать браузером, чтобы отображать части страницы, отличные от страницы, например
- Возможность открыть новое окно браузера;
- возможность перемещать, масштабировать и закрывать окно браузера;
- Объект
navigator
, предоставляющий подробную информацию о браузере; - Объект
location
, предоставляющий подробную информацию о странице, которую загружает браузер; screen
объект, предоставляющий подробную информацию о разрешении экрана пользователя;performance
объекты, которые предоставляют подробную информацию об использовании памяти браузером, поведении навигации и статистике времени;- Операции, связанные с хранилищем браузера, такие как
cookies
,sessionStorage
,localStorage
и т. д.; - другие пользовательские объекты, такие как
XMLHttpRequest
иActiveXObject
дляIE
.
ECMAScript
ECMAScript
описывает синтаксис и основные объекты JavaScript: 1) синтаксис; 2) типы; 3) заявления; 4) ключевые слова; 5) зарезервированные слова; 6) операторы; 7) глобальные объекты.
ECMA
публикует первую версию стандартного документа 262
(ECMA-262), который определяет стандарт для языков сценариев браузера и называет этот язык ECMAScript
, то есть версию 1.0
, поэтому, в двух словах, ECMAScript
— это набор спецификаций, а JavaScript
— это реализация ECMAScript
является реализацией. Почему это реализация? Поскольку Adobe ActionScript
также реализует ECMAScript
, а JScript
также реализует ECMAScript
.
Отношения
Итак, после краткого понимания этих ключевых понятий легко увидеть, как они соотносятся друг с другом! В книге JavaScript Advanced Programming, Fourth Edition есть диаграмма, очень четко описывающая взаимосвязь между JavaScript
, ECMAScript
, DOM
и BOM
.
Мы заключаем, что ECMAScript, DOM и BOM являются неотъемлемыми частями JavaScript.
Резюме
Итак, в конце статьи, когда интервьюер спрашивает «Что такое JavaScript?», мы знаем, с чего начать и с чего начать. Поэтому, если мы разъяснили интервьюеру все пункты этой статьи, я уверен, что мы сможем произвести хорошее впечатление, не производя при этом плохого 😋
Расположение JavaScript
JavaScript
— это язык сценариевJavaScript
— слабо типизированный языкJavaScript
имеет динамический типJavaScript
является однопоточнымJavaScript
- интерпретируемый языкJavaScript
хорошо кроссплатформен
разница между JavaScript
и ECMAScript
и связь с DOM
и BOM
DOM
(объектная модель документа), которая предоставляетmethods
иinterfaces
для взаимодействия с веб-контентом.BOM
(объектная модель браузера), которая предоставляетmethods
иinterfaces
для взаимодействия с браузером.ECMAScript
, который описывает синтаксис и основные объектыJavaScript
.
Наконец, цитируя вступительный абзац: «Чтобы действительно научиться хорошо использовать JavaScript, важно понять его природу, историю и ограничения».