-
Notifications
You must be signed in to change notification settings - Fork 0
6. Operators (операторы)
Оператор - это встроенная функция которая как и обычная функция выполняет какие-то действия и возвращает значение. В этом разделе будут:
- Операторы
- Операнды
- Унарные и бинарные
- Инфиксная, префиксная и постфиксная записи
Основные операторы
+
-
*
/
- Арифметические
===
!==
<=
, >=
- Сравнения
!
&&
||
- Логические (не, и, или)
=
- Присваивания
Текстовые операторы
typeof
- проверить тип значения
instanceof
- проверить принадлежность объекта к тому или иному классу
new
- создаёт новый экземпляр объекта
delete
- удалить св-во в объекте
a = 10
тут a
и 10
это операнды или аргументы, левый и правый, на angl - left hand и right hand
Встроенные функции выглядят примерно так, на примере a = 10
:
function =(переменная, выражение) { // переменная тут это "a", а выражение просто число "10"
1. Получение результата выражения
2. Поиск переменной по имени // имя тут "a"
3. Присваивание результата выражения переменной // присваиваем "10" переменной "a"
4. Возврат результата выражения
}
Унарные операторы - это операторы у которых только один аргумент(операнд).
a++
- увеличивает значение переменной на единицу
+a
- с помощью этого оператора можно конвертировать например строку в число
delete obj.a
- это тоже унарный оператор, он удаляет св-во объекта
tyoeof a
- определяет тип переменной
new Object()
- создаёт новый экземпляр объекта
Бинарные операторы - это операторы у которых всегда два аргумента(операнда). Несколько примеров:
a = 5
a + b
a += 5 // увеличение значения на определенное число и присваиваем новое значение переменной
a === b // такой оператор сравнивает и присваивает значение, а === сравнивает еще и тип, т.е. если сравнить строку 5 и число 5 то получим false
a && b
Инфиксная запись - это когда оператор находится между операндами(агрументами)
a = true
a + b
a += b
a || b
a > b
Префиксная запить - когда оператор находится перед операндом
++a // у этого есть и еще постфиксная запись - a++
delete obj.a
typeof a
Постфиксная запись - когда оператор идёт за операндом
a++
myFunction()
Приоритет операторов в JS
Но на самом деле можно логически понять в каком приоритете будут выполняться операторы.
a + b * c / d - e // всё так же как в математике
a + ((b * c) / (d - e)) // так же как в математике можно изменить приоритет скобками
Это значения которые при приведении к логическому типу Boolean покажут false. Привести любое значение к Boolean можно специальной функцией Boolean(value) -> false
, следующие значения считаются ложными в JS:
false
0
''
undefined
null
ПРИМЕР:
console.log(Boolean(0))
console.log(typeof(10)) // number
console.log(typeof 10 === 'number') // true так можно проверить тип переменной
let isUndefined
console.log(isUndefined) // undefined
console.log(typeof isUndefined === 'undefined') // true
!
- префиксный оператор не т.е. всегда пишется перед операндом. Boolean всегда возвращает true или false
&&
и ||
- бинарные операторы, могут использоваться вместе, возвращают значение одного из операндов.
Всегда даёт одно из 2х boolean значений true или false, Чаще всего он используется в условных инструкциях, это такие инструкции как if
и ifelse
.
!10 // false
!0 // true
!'abc' // false
!'' // true
!true // false
!undefined // true
Рассмотрим другой пример с !!
, используя этот оператор любое значение можно сконвертировать с boolean и тем самым можно проверить ложность значения.
!!10 // true
!!0 // false
!!'abc' // true
!!'' // false
!!true // true
!!undefined // false
Оператор "логическое и" &&
требует true во всех выражениях
Выражение 1 && Выражение 2
Если выражение 1 - false:
- Выражение 2 игнорируется
- Возвращается результат Выражения 1 т.е. false
123 && null // null
Если выражение 1 - true:
- Выражение 2 выполняется и оценивается
- Если Выражение 2 false то возвращается результат Выражения 2 т.е. false
Если выражение 1 - true:
- Выражение 2 выполняется и оценивается
- Если Выражение 2 true то возвращается тоже результат Выражения 2 т.е. true
Выражение 1 || Выражение 2
Если выражение 1 - true:
- Выражение 2 игнорируется
- Возвращается результат Выражения 1 т.е. true
123 || null // 123
Если выражение 1 - false:
- Выражение 2 выполняется и оценивается
- Если Выражение 2 true то возвращается тоже результат Выражения 2 т.е. true
Если выражение 1 - false:
- Выражение 2 выполняется и оценивается
- Если Выражение 2 false то возвращается результат Выражения 2 т.е. false
let b = 10
b && console.log('Executed!')
// В консоль придет Executed!
let c
c && console.log('Executed!')
// В консоль придет Undefined
Этот трюк используется чтобы условно вызывать те или иные функции всего одной строкой вместо инструкции if
который описывается несколькими строками.
a && b && c && d
В этом случае будет возвращено первое найденное значение false и возвращено от той переменной где оно найдено, остальные переменные или выражения не оцениваются. Если все истина то возвращаем результат d
независимо от того ложно оно или истинно.
ВАЖНО: потому что эти операторы всегда возвращают значения одного из операндов.
a || b || c || d
Тут тоже самое только ищем первое истинное выражение и возвращаем его значение.
footer