Основы Flashcards
Типизация в js
в js динамическая типизация => нужно следить за присваиваемыми типами
const может предотвратить проблему не дав тем самым переприсвоить переменную
const,letиvar
–const
1.нельзя объявлять переменные без значения
2.объект внутри можно мутировать( изменение объекта не приводит к изменению ссылки на него)
–let
1.можно объявить без присвоения значения undef
–let и const
1.К переменнымletиconstнельзя обращаться до их объявления в коде
2.Уlet иconst есть так называемаяtemporal dead zone
(TDZ) — момент выполнения скрипта до объявления переменной. Переменная может использоваться и выше объявления, при условии, что содержащая её часть кода будет выполнена после инициализации
3.имеют блочнуюобласть видимости
Блочная область видимости не даёт получить значение переменной вне блока, где она была объявлена.
–var
1.можно объявить без присвоения = undef
2.функциональная область видимости или глобальный объект
3.можно обращаться до объявления - hosting
use strict
более строгая проверка синтаксиса
- Нельзя присваивать значения или обращаться к необъявленным переменным
- Запрещено присваивать значения глобальный переменным, доступным только для чтения или записи
- Нельзя удалить «неудаляемое» свойство объекта
- Запрещено дублирование параметров
- Нельзя создавать функции с помощью функции eval
- Значением «this» по умолчанию является undefined
операторы логического и нулевого присваивания
-
||
(ИЛИ) - находит первое истинное значение-
||=
(Оператор логического присваивания ИЛИ)a||=
b;
вычисляет операнды слева направо.- Конвертирует
a
в логическое значение. - Если
a
ложно, присваиваетa
значениеb
.
- Конвертирует
-
-
&&
(И) -true
, если оба аргумента истинны, а иначе –false
- Приоритет оператора
&&
больше, чем у||
-
&&=
(Оператор логического присваивания И)&&=
присвоитa
значениеb
только в том случае, еслиa
истинно. -
!
(НЕ) -
??
(Оператор нулевого слияния)-
??=
(Оператор нулевого присваивания
-
==, ===
=== - проверяет типы
null и undefined
—При строгом равенстве===
Эти значения различны, так как различны их типы.
—При нестрогом равенстве==
Эти значения равны друг другу и не равны никаким другим значениям. Это специальное правило языка.
—При использовании математических операторов и других операторов сравнения< > <= >=
Значенияnull/undefined
преобразуются к числам:null
становится0
, аundefined
–NaN
.
null и 0
alert( null > 0 );
alert( null == 0 );
alert( null >= 0 );
null преобразуется в 0
alert( null > 0 ); // (1) false
alert( null == 0 ); // (2) false
alert( null >= 0 ); // (3) true
как хранятся данные
–по ссылке(объекты)
учитывается факт ссылку на один объект
Изменения внутри объекта будут видны всем у кого есть ссылка на этот объект.
Прямое изменение данных объекта называетсямутирование
–по значению(примитивы)
безопасная смена значений
типы данных
Num
str
bool
bigint
symbol
object
undef
null
типизация
строковое
-при сложении числа с строкой = строка
-String() приводит все к строке кроме объектов
числовое
-Number() / +str / (str/1) / str*1
-Number(undefined); // NaN
-Number(null); // 0
-Number(true); // 1
-Number(false); // 0
Логическое
Boolean(1); // true
Boolean(‘строка’); // true
Boolean(0); // false
Boolean(null); // false
Boolean(undefined); // false
Boolean(NaN); // false
Boolean(‘’); // false
typeof
возвращает не тип а строку с типов для всех кроме null = Object
Math
— это объект, хранящий в себе различные математические константы round()
— округление по обычным правилам;
floor()
— округление вниз;
ceil()
— округление вверх;
trunc()
— отбрасывание дробной части, не обращая внимания на знак аргумента.
- Math.random()
Возвращает случайное число от 0 до 1
спред
позволяет передавать итерируемые коллекции как список аргументов функции или добавлять содержащиеся в них элементы в новый массив.
Спред применятся и для объектов, чтобы копировать пары ключ-значение из одного объекта в другой.
циклы
while
for
break
continue
for in
позволяет пройти вциклепо перечисляемым свойствам объекта, в том числе по свойствам из прототипа.
for of
не предоставляет доступа к номеру текущего элемента, только к его значению
условные конструкции
if else
switch case break
?:
отладка
debugger
линтер
devtools
throw
try/catch