Базовый курс JavaScript
-
1. Вступление. Подготовка к работе. console.log
-
2. Типы данных, операторы, методы и свойства
-
3. Динамическая типизация. Условия if, swith
-
4. Логические операторы. Функции
-
5. Функции declaration/expression. Область видимости
-
6. Объекты, массивы
-
7. Циклы while и for
-
8. Методы массивов
-
Практика 1.
-
10. Доступ к элементам в DOM. Доступ к элементам
-
11. Изменение документа. Практика: Галерея
-
12. Добавление событий
-
13. Всплытие и погружение. Объект события.
-
14. Объект Math. localStorage
-
15. Практика
-
16. Дата. This
-
17. Асинхронность js. Promise.
-
18. Практика
2. Типы данных, операторы, методы и свойства
Переменные
Переменная – это «именованное хранилище» для данных. Мы можем использовать переменные для хранения товаров, посетителей и других данных.
Для создания переменной в JavaScript используйте ключевое слово let
или const.
let
Приведённая ниже инструкция создаёт (другими словами: объявляет или определяет) переменную с именем «message»:
let message
Теперь можно поместить в неё данные, используя оператор присваивания =
:
let message;
message = 'Hello!';
Для краткости можно совместить объявление переменной и запись данных в одну строку:
let message = 'Hello!';
В ту же переменную можно поместить новые данные
let message = 'Hello!';
message = ‘World!’;
Мы также можем объявить две переменные и скопировать данные из одной в другую.
let hello = 'Hello world!';
let message = hello ;
!!! Обратите внимание, что переменной, объявленную через let, можно переназначать данные.
const
Чтобы объявить константную, то есть, неизменяемую переменную, используйте const
вместоlet
:
const myBirthday = '18.04.1982';
Переменные, объявленные с помощью const
, называются «константами». Их нельзя изменить. Попытка сделать это приведёт к ошибке.
Типы данных
Число
let n = 123;
n = 12.345;
Числовой тип данных (number
) представляет как целочисленные значения, так и числа с плавающей точкой.
Существует множество операций для чисел, например, умножение *
, деление /
, сложение +
, вычитание -
и так далее.
Кроме обычных чисел, существуют так называемые «специальные числовые значения», которые относятся к этому типу данных: Infinity
, -Infinity
и NaN
.
Infinity
представляет собой математическую бесконечность ∞. Это особое значение, которое больше любого числа.Мы можем получить его в результате деления на нольNaN
означает вычислительную ошибку. Это результат неправильной или неопределённой математической операции, например:alert( "не число" / 2 );
Строка
Строка (
string
) в JavaScript должна быть заключена в кавычки.let str = "Привет"; let str2 = 'Одинарные кавычки тоже подойдут'; let phrase = `Обратные кавычки позволяют встраивать переменные ${str}`;
В JavaScript существует три типа кавычек.
- Двойные кавычки:
"Привет"
. - Одинарные кавычки:
'Привет'
. - Обратные кавычки:
`Привет`
.
Двойные или одинарные кавычки являются «простыми», между ними нет разницы в JavaScript.
Обратные же кавычки имеют расширенную функциональность. Они позволяют нам встраивать выражения в строку, заключая их в
${…}
.Длина строки
Свойство
length
содержит длину строки:str.length
Доступ к символам
let str = `Hello`; // получаем первый символ alert( str[0] ); // H
Булевый (логический) тип
Булевый тип (
boolean
) может принимать только два значения:true
(истина) иfalse
(ложь).Такой тип, как правило, используется для хранения значений да/нет:
true
значит «да, правильно», аfalse
значит «нет, не правильно».Например:
let nameFieldChecked = true; // да, поле отмечено let ageFieldChecked = false; // нет, поле не отмечено
Булевые значения также могут быть результатом сравнений:
let isGreater = 4 > 1; alert( isGreater ); // true (результатом сравнения будет "да")
Значение «null»
Специальное значение
null
не относится ни к одному из типов, описанных выше.Оно формирует отдельный тип, который содержит только значение
null
:let age = null;
В JavaScript
null
не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках.Это просто специальное значение, которое представляет собой «ничего», «пусто» или «значение неизвестно».
В приведённом выше коде указано, что значение переменной
age
неизвестно.Значение «undefined»
Специальное значение
undefined
также стоит особняком. Оно формирует тип из самого себя так же, как иnull
.Оно означает, что «значение не было присвоено».
Если переменная объявлена, но ей не присвоено никакого значения, то её значением будет
undefined
:let age; alert(age); // выведет "undefined"
Объекты и символы
Тип
object
(объект) – особенный.Все остальные типы называются «примитивными», потому что их значениями могут быть только простые значения (будь то строка, или число, или что-то ещё). В объектах же хранят коллекции данных или более сложные структуры.
Объекты занимают важное место в языке и требуют особого внимания. Мы разберёмся с ними в главе Объекты после того, как узнаем больше о примитивах.
Тип
symbol
(символ) используется для создания уникальных идентификаторов в объектах. Мы упоминаем здесь о нём для полноты картины, изучим этот тип после объектов.Оператор typeof
Оператор
typeof
возвращает тип аргумента. Это полезно, когда мы хотим обрабатывать значения различных типов по-разному или просто хотим сделать проверку.У него есть две синтаксические формы:
- Синтаксис оператора:
typeof x
. - Синтаксис функции:
typeof(x)
.
Другими словами, он работает со скобками или без скобок. Результат одинаковый.
- Двойные кавычки:
Базовые операторы, математика
Математика
Поддерживаются следующие математические операторы:
- Сложение
+
, - Вычитание
-
, - Умножение
*
, - Деление
/
, - Взятие остатка от деления
%
, - Возведение в степень
**
.
Взятие остатка %
Оператор взятия остатка %
, несмотря на обозначение, никакого отношения к процентам не имеет.
Результат a % b
– это остаток от целочисленного деления a
на b
.
Например:
alert( 5 % 2 ); // 1, остаток от деления 5 на 2
alert( 8 % 3 ); // 2, остаток от деления 8 на 3
alert( 8 % 4 ); // 0, остаток от деления 8 на 4
Возведение в степень **
В выражении a ** b
оператор возведения в степень умножает a
на само себя b
раз.
Например:
alert( 2 ** 2 ); // 4 (2 умножено на себя 2 раза)
alert( 2 ** 3 ); // 8 (2 * 2 * 2, 3 раза)
alert( 2 ** 4 ); // 16 (2 * 2 * 2 * 2, 4 раза)
Математически, оператор работает и для нецелых чисел. Например, квадратный корень является возведением в степень 1/2
:
alert( 4 ** (1/2) ); // 2 (степень 1/2 эквивалентна взятию квадратного корня)
alert( 8 ** (1/3) ); // 2 (степень 1/3 эквивалентна взятию кубического корня)
Сложение строк при помощи бинарного +
Давайте рассмотрим специальные возможности операторов JavaScript, которые выходят за рамки школьной арифметики.
Обычно при помощи плюса '+'
складывают числа.
Но если бинарный оператор '+'
применить к строкам, то он их объединяет в одну:
let s = "моя" + "строка";
alert(s); // моястрока
Обратите внимание, если хотя бы один операнд является строкой, то второй будет также преобразован в строку.
Например:
alert( '1' + 2 ); // "12"
alert( 2 + '1' ); // "21"
Сложение и преобразование строк — это особенность бинарного плюса +
. Другие арифметические операторы работают только с числами и всегда преобразуют операнды в числа.
Например, вычитание и деление:
alert( 6 - '2' ); // 4, '2' приводится к числу
alert( '6' / '2' ); // 3, оба операнда приводятся к числам
Операторы сравнения
Многие операторы сравнения известны нам из математики.
В JavaScript они записываются так:
- Больше/меньше:
a > b
,a < b
. - Больше/меньше или равно:
a >= b
,a <= b
. - Равно:
a == b
. Обратите внимание, для сравнения используется двойной знак равенства==
. Один знак равенстваa = b
означал бы присваивание. - Не равно. В математике обозначается символом
≠
, но в JavaScript записывается какa != b
.
В этом разделе мы больше узнаем про то, какие бывают сравнения, как язык с ними работает и к каким неожиданностям мы должны быть готовы.
В конце вы найдёте хороший рецепт того, как избегать «причуд» сравнения в JavaScript.
Результат сравнения имеет логический тип
Все операторы сравнения возвращают значение логического типа:
true
– означает «да», «верно», «истина».false
– означает «нет», «неверно», «ложь».
Например:
alert( 2 > 1 ); // true (верно)
alert( 2 == 1 ); // false (неверно)
alert( 2 != 1 ); // true (верно)
Результат сравнения можно присвоить переменной, как и любое значение:
let result = 5 > 4; // результат сравнения присваивается переменной result
alert( result ); // true
Строгое сравнение
Использование обычного сравнения ==
может вызывать проблемы. Например, оно не отличает 0
от false
:
alert( 0 == false ); // true
Оператор строгого равенства ===
проверяет равенство без приведения типов.
Другими словами, если a
и b
имеют разные типы, то проверка a === b
немедленно возвращает false
без попытки их преобразования.
Задание
Проснувшись однажды утром после беспокойного
1) Следующим переменным присвоить значения
— name— написать свое имя,
— number — любое число ,
— age — возраст ,
— someAnimals — строка с перечислением любимых животных (минимум 3 значения),
— boolean — любое булевое значение,
2) Используя методы и свойства:
— Вывести в консоль тип данных значений переменных name, number, someAnimals ;
— Вывести в консоль длину строки name
— Вывести в консоль “Меня зовут name” и “Мне age лет ”
3) Проверить, чтобы все работало без ошибок в консоли