Предисловие

Цитата из книги JavaScript Advanced Programming, Fourth Edition: «От простых сценариев проверки ввода до мощного языка программирования — рост JavaScript не был предсказан никем. Это достаточно просто, чтобы научиться использовать его за считанные минуты, и достаточно сложно, чтобы овладеть им могут потребоваться годы. Чтобы действительно научиться правильно использовать JavaScript, важно понять его природу, историю и ограничения».

Интервьюер: Что такое JavaScript?

Me: em… JavaScript is JavaScript... 👀

Представьте, если бы интервьюер спросил вас: «Что такое 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, разработчики могут манипулировать браузером, чтобы отображать части страницы, отличные от страницы, например

  1. Возможность открыть новое окно браузера;
  2. возможность перемещать, масштабировать и закрывать окно браузера;
  3. Объект navigator, предоставляющий подробную информацию о браузере;
  4. Объект location, предоставляющий подробную информацию о странице, которую загружает браузер;
  5. screen объект, предоставляющий подробную информацию о разрешении экрана пользователя;
  6. performance объекты, которые предоставляют подробную информацию об использовании памяти браузером, поведении навигации и статистике времени;
  7. Операции, связанные с хранилищем браузера, такие как cookies, sessionStorage, localStorage и т. д.;
  8. другие пользовательские объекты, такие как 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, важно понять его природу, историю и ограничения».