Введение в JavaScript
(часть 1)
Лыкошин Александр
2020-24
## Содержание - Место Javascript engine в браузерах (Chrome/Chromium, Firefox) и Nodejs - Грамматика языка и основные типы данных
## Архитектура браузера - Chrome, Microsoft Edge, Opera, Vivaldi, Brave, Amazon Silk и другие браузеры на базе Chromium: - Blink (ранее WebKit) - Browser engine - DOM, HTML DOM and CSS rendering engines - Реализация Web IDL (описание API веб-браузеров) - Skia Graphics engine — взаимодействует с графической платформой (такой как OpenGL, Vulkan, DirectX и т.д.) which depends on the platform - **V8 JavaScript engine** - Firefox: - Gecko (ранее SpiderMonkey) - Browser engine - ... - SpiderMonkey JavaScript engine Ранее Apple и Google использовали WebKit engine; Microsoft - MSHTML engine.
## V8 JavaScript engine - V8 - бесплатная JavaScript engine в открытых кодах - Разработана в рамках проекта Chromium для веб-браузеров Google Chrome и Chromium - Первая версия - 2008 год - Используется: - Веб-браузеры на основе Chromium - Google Chrome, Brave, Opera, Vivaldi и Microsoft Edge. - Сервер баз данных Couchbase - фреймворк для разработки дектоп-приложений Electron (используется текстовым редактором Atom, Visual Studio Code и др.) - **Среда выполнения Node.js** - ... БД Mongodb перешла с V8 на SpiderMonkey.
## История - SUN и Java, Netscape и Netscape Navigator - Brendan Eich, 1995 - создан за 10 дней - Использует отдельные идеи: - Java - синтаксис - “look like Java” - Scheme - функциональный подход - Self - прототипная модель - Ссылки: - https://medium.com/@_benaston/lesson-1a-the-history-of-javascript-8c1ce3bffb17 - https://exploringjs.com/impatient-js/ch_history.html - https://auth0.com/blog/a-brief-history-of-javascript/ - https://thenewstack.io/brendan-eich-on-creating-javascript-in-10-days-and-what-hed-do-differently-today/
## Комментарии Синтаксис комментариев является таким же, как и в C++ и во многих других языках: ```js // Комментарий, занимающий одну строку. /* Комментарий, занимающий несколько строк. */ /* Нельзя вкладывать /* комментарий в комментарий */ SyntaxError */ ```
- Объявления - var <===> let и const - Необъявленные глобальные переменные - undefined
## Область видимости переменных - всплытие(*) переменных - всплытие(*) функций - глобальные переменные - const (*) всплытие - поднятие, hoisting
## Структуры и типы данных - Типы данных - Семь типов данных, которые являются примитивами: - `Boolean`: `true` и `false` - `null` (*) - `undefined`: тип переменной, которой не присвоено значение - `Number`: `42` или `3.14159` - `String`: `"Howdy"` - `Symbol` (ES6 - 2015) - `BigInt` (ES11 - 2020) - и `Object` (включая массивы) (*) Но `typeof null === "object"`
#### Значения null и undefined `0`
/
`""`
vs
`null`
vs
`undefined` ![plan-image-zero-null-undef.png](./img/plan-image-zero-null-undef.png)
## Преобразование типов данных JavaScript — это динамически типизированный язык. Это означает, что вам не нужно указывать тип данных переменной, когда вы ее объявляете, типы данных преобразуются автоматически по мере необходимости во время выполнения скрипта. ```js var answer = 42; answer = "Thanks for all the fish..."; x = "The answer is " + 42 // "The answer is 42" y = 42 + " is the answer" // "42 is the answer" "37" - 7 // 30 "37" + 7 // "377" ```
## Литералы Литералы используются для представления значений в JavaScript. Они являются фиксированными значениями, а не переменными. - Литерал массива - Логический литерал - Литерал целого числа - Литерал числа с плавающей точкой - Литерал объекта - RegExp литерал - Литерал строки - Литерал массива
## Спасибо за внимание #### Вопросы..? [Следующая часть >>](./index2.html)