52 lines
2.1 KiB
Markdown
52 lines
2.1 KiB
Markdown
- Язык для написания динамических сценариев, выполняемых на стороне клиента
|
||
- Объектно-ориентированный скриптовый язык программирования
|
||
- Динамическая типизация
|
||
- Слабая типизация
|
||
- Автоматическое управление памятью
|
||
- Прототипное программирование
|
||
- Функции как объекты первого класса
|
||
## Особенности синтаксиса
|
||
- Все идентификаторы регистрозависимы
|
||
- В названиях переменных можно использовать буквы, подчеркивание, символ доллара, арабские цифры
|
||
- Названия переменных не могут начинаться с цифры
|
||
- Комментарии как в джаве
|
||
## Структура языка
|
||
- Ядро ([[ECMAScript]] - спецификация языка)
|
||
- Объектная модель браузера ([[BOM]])
|
||
- Объектная модель документа ([[DOM]])
|
||
## Внешнее подключение к HTML
|
||
#### Через `head`
|
||
Нужен атрибут `defer` - чтобы скачивать скрипт в фоновом режиме и пользователь не видел белый экран (DOM строится сверху вниз)
|
||
```HTML
|
||
...
|
||
<head>
|
||
<script src="main.js" defer></script>
|
||
</head>
|
||
...
|
||
```
|
||
#### Через `body`
|
||
DOM создается сверху вниз, поэтому указываем в самом низу
|
||
```HTML
|
||
...
|
||
<body>
|
||
...
|
||
<script scr="main.js"></script>
|
||
</body>
|
||
```
|
||
## Внутренний скрипт
|
||
```HTML
|
||
<body>
|
||
<h1>Тест</h1>
|
||
|
||
<script>
|
||
// Чистый JS код прямо в HTML:
|
||
const title = document.querySelector('h1');
|
||
console.log("Заголовок найден:", title.textContent);
|
||
</script>
|
||
</body>
|
||
```
|
||
## В атрибутах
|
||
> [!warning] Антипаттерн
|
||
```HTML
|
||
<button onclick="alert('Привет!')">Нажми меня</button>
|
||
``` |