Логические операторы
Материал на этой странице устарел, поэтому скрыт из оглавления сайта.
Более новая информация по этой теме находится на странице https://learn.javascript.ru/logical-operators.
Для операций над логическими значениями в JavaScript есть || (ИЛИ), && (И) и ! (НЕ).
Хоть они и называются «логическими», но в JavaScript могут применяться к значениям любого типа и возвращают также значения любого типа.
|| (ИЛИ)
Оператор ИЛИ выглядит как двойной символ вертикальной черты:
result = a || b;
Логическое ИЛИ в классическом программировании работает следующим образом: «если хотя бы один из аргументов true , то возвращает true , иначе – false «. В JavaScript, как мы увидим далее, это не совсем так, но для начала рассмотрим только логические значения.
Получается следующая «таблица результатов»:
alert( true || true ); // true alert( false || true ); // true alert( true || false ); // true alert( false || false ); // false
Если значение не логического типа – то оно к нему приводится в целях вычислений. Например, число 1 будет воспринято как true , а 0 – как false :
if (1 || 0) < // сработает как if( true || false ) alert( 'верно' ); >
Обычно оператор ИЛИ используется в if , чтобы проверить, выполняется ли хотя бы одно из условий, например:
var hour = 9; if (hour < 10 || hour >18)
Можно передать и больше условий:
var hour = 12, isWeekend = true; if (hour < 10 || hour >18 || isWeekend)
Короткий цикл вычислений
JavaScript вычисляет несколько ИЛИ слева направо. При этом, чтобы экономить ресурсы, используется так называемый «короткий цикл вычисления».
Допустим, вычисляются несколько ИЛИ подряд: a || b || c || . . Если первый аргумент – true , то результат заведомо будет true (хотя бы одно из значений – true ), и остальные значения игнорируются.
Это особенно заметно, когда выражение, переданное в качестве второго аргумента, имеет сторонний эффект – например, присваивает переменную.
При запуске примера ниже присвоение x не произойдёт:
var x; true || (x = 1); alert(x); // undefined, x не присвоен
…А в примере ниже первый аргумент – false , так что ИЛИ попытается вычислить второй, запустив тем самым присваивание:
var x; false || (x = 1); alert(x); // 1
Логика и истина
В JavaScript есть операторы if и then , а также тернарный оператор, которые позволяют нам делать определённые вещи только при соблюдении некоторых условий. JavaScript определяет, является ли условие выполненным, оценивая значение или выражение на его «истинность». Поскольку JavaScript относится к динамически типизированным языкам, мы можем использовать любое значение или их комбинацию. Однако, правила, по которым JavaScript определяет, является ли данное значение или выражение true или false могут запутать.
Вот пример простого выражения if в JavaScript. В нём оценивается на истину число 1; поскольку 1 истинно, код внутри блока, ограниченный < и >, будет выполнен.
if ( 1 ) < // этот код будет выполнен! console.log( '1 - истина' ); >
Как выясняется, большинство значений в JavaScript являются истинными — на деле только пять значений в JavaScript ложны:
- undefined (значение по умолчанию объявленных переменных, которым не присвоено значение);
- null ;
- NaN (not a number, не число);
- 0 (ноль);
- » (пустая строка).
Когда мы хотим проверить, является ли значение «ложно», то можем использовать оператор ! :
var a = ''; if ( !a ) < // этот код будет выполнен если a ложно console.log( 'a - ложно' ); >
NaN это особый случай. Значения, которые NaN будет оценивать на ложь, в простом условном выражении:
var notANumber = 'four' - 'five'; if ( !notANumber ) < // этот код будет выполнен console.log( '!notANumber - истинно' ); >
Тем не менее, если мы сравним значение NaN с false , то вернёмся к ложному значению:
var notANumber = 'four' - 'five'; if ( notANumber == false ) < // этот код не будет выполнен! console.log( 'notANumber - ложно' ); >else < // этот код будет выполнен console.log( 'notANumber - истинно' ); >
Важно помнить, что все другие значения, кроме пяти перечисленных выше, истинны. Сюда входят пустые массивы, пустые объекты, все непустые строки (в том числе строка ‘0’) и любые числа кроме 0.
Можно написать выражение с if и else в одну строку без использования фигурных скобок. Эта практика не рекомендуется, поскольку усложняет чтение кода и его поддержку. Мы упомянули об этом просто потому, что вы можете столкнуться с этим в чужом коде.
Логические операторы
Логические операторы позволяют вам вычислить операнды с помощью операций И ( && ) и ИЛИ ( || ).
var foo = 1; var bar = 0; var baz = 2; foo || bar; // возвращает 1, которое истинно bar || foo; // возвращает 1, которое истинно foo && bar; // возвращает 0, которое ложно foo && baz; // возвращает 2, которое истинно
В случае оператора || возвращается первое значение, если оно истинно, или последнее значение. В случае оператора && возвращается первое значение, если оно ложно, или последнее значение.
Иногда вы можете увидеть логические операторы, используемые в качестве хитрого способа выполнения кода:
foo && bar(); // выполняет bar() только если foo истинно var bar = baz || createBar(); // использовать baz в качестве значения для bar если // baz не ложно; в противном случае вызвать createBar
Такой стиль элегантен и приятно лаконичен, но может вызвать сложности при чтении, особенно у начинающих. Вы должны понимать, что означает такая запись в коде если столкнетесь с ней, но можете воздержаться от использования данного стиля первое время и применять традиционные выражения if и else для ясности.
Тернарный оператор
Часто необходимо установить разное значение переменной на основе того, истинно или ложно некоторое условие. Конечно, вы можете добиться этого с выражениями if и else :
Внимание! Неудачное решение
var propertyName; if (dim === 'width') < propertyName = 'clientWidth'; >else
Однако тернарный оператор предлагает более краткий способ установить значение переменной согласно условию:
var propertyName = ( dim === 'width' ) ? 'clientWidth' : 'clientHeight';
Выражение перед ? оценивается на его истинность. Если оно истинно, в качестве значения переменной propertyName используется первое значение ( clientWidth ); в противном случае применяется второе значение ( clientHeight ).
Автор: Ребекка Мёрфи
Последнее изменение: 01.09.2015
- Основы JavaScript
- Объекты
- Массивы
- Логика и истина
- Подводные камни JavaScript
Что означают true и false
В языках программирования, таких как JavaScript, Python, Java и других, true и false играют ключевую роль. Они представляют собой значения логического типа данных, которые могут быть либо истинными (true), либо ложными (false).
true и false являются основными элементами логической алгебры и широко используются в условных операторах, циклах и других конструкциях программ для принятия решений на основе определенного условия. Они могут быть также результатом сравнения двух значений или выполнения логических операций.
Когда значение true используется в условном операторе или цикле, это означает, что условие истинно и блок кода внутри оператора будет выполнен. Если значение false, то блок кода будет пропущен.
Например, можно использовать условный оператор if для проверки, является ли число четным или нечетным:
В этом примере, если число делится на 2 без остатка, то условие будет истинным (true) и будет выводиться сообщение «Число четное». Если число не делится на 2 без остатка, то условие будет ложным (false) и будет выводиться сообщение «Число нечетное».
Определение true и false
true — это логическое значение, которое представляет истину или правду. В программировании оно используется для обозначения верности или выполнения логического условия.
false — это логическое значение, которое представляет ложь или неправду. В программировании оно используется для обозначения неверности или невыполнения логического условия.
Логические значения true и false часто используются в условных выражениях и операторах сравнения. Они позволяют программе принимать решения на основе результатов сравнений или других логических операций.
Например, при сравнении двух чисел с помощью оператора сравнения «>» (больше), если первое число действительно больше второго, то результатом выражения будет true. В противном случае, если первое число меньше или равно второму, результат будет false.
Логические значения true и false также могут быть результатом выполнения логических операций, таких как «И» (and), «ИЛИ» (or) или «НЕ» (not). Например, если оба условия в выражении «A и B» истинны, то результатом будет true. Если хотя бы одно из условий ложно, результат будет false.
Логические значения true и false очень полезны в программировании для выполнения различных задач и принятия решений на основе логических условий. Они позволяют программам быть гибкими и позволяют лучше управлять потоком выполнения программы.
Значения true и false
true и false — это булевые значения в программировании, которые обозначают логическую истинность или ложность выражения или условия.
Значение true означает истинное выражение или условие. Оно обозначает, что утверждение верно или условие выполняется.
Значение false указывает на ложное выражение или условие. Оно обозначает, что утверждение неверно или условие не выполняется.
Булевые значения true и false часто используются в логических операциях, условных конструкциях и выражениях.
- В условной конструкции if: if (условие) { // выполнить код } else { // выполнить другой код }
- В логической операции И: выражение1 && выражение2
- В логической операции ИЛИ: выражение1
Тип Boolean, логические операторы и операторы сравнения
Логический тип Boolean в JavaScript представляет одно из двух значений: true (истина) или false (ложь).
Значения Boolean
В программировании очень часто бывают ситуации, когда требуется тип данных, который может принимать одно значение из двух, вроде
- ДА / НЕТ
- ВКЛ / ВЫКЛ
- ИСТИНА / ЛОЖЬ
Именно для этих случаев в JavaScript существует логический тип данных Boolean, который может принимать только значение true (истина) или false (ложь).
Функция Boolean()
Чтобы определить, является ли выражение (или переменная) истиной (возвращает значение true), можно воспользоваться функцией Boolean():
Boolean(10 > 9) // возвращает trueИли можно сделать еще проще:
(10 > 9) // также возвращает true 10 > 9 // также возвращает trueВсе имеет «значение» True или False
Любое значение отличное от 0 имеет логическое значение true.
// следующие выражения возвращают true Boolean(100) Boolean( 3.14) Boolean(-15) Boolean("Hello") Boolean("false") Boolean(7 + 1 + 3.14)Логическое значение 0 (ноль) — false.
var x = 0; Boolean(x); // возвращает falseЛогическое значение -0 (минус ноль) — false.
var x = -0; Boolean(x); // возвращает falseЛогическое значение «» (пустая строка) — false.
var x = ""; Boolean(x); // возвращает falseЛогическое значение undefined — false.
var x; Boolean(x); // возвращает falseЛогическое значение null — false.
var x = null; Boolean(x); // возвращает falseЛогическое значение false — false.
var x = false; Boolean(x); // возвращает falseЛогическое значение NaN — false.
var x = 10 / "H"; Boolean(x); // возвращает falseЗначения типа Boolean могут быть объектами
Обычно, логические значения типа Boolean определяются примитивными литералами:
var x = false;Однако, в JavaScript при помощи ключевого слова new логические значения также можно определить и как объекты:
var y = new Boolean(false);var x = false; var y = new Boolean(false); // typeof x вернет тип boolean // typeof y вернет тип objectТем не менее, не определяйте значения типа Boolean как объекты. Это замедляет скорость выполнения скрипта. Кроме этого, ключевое слово new в данном случае усложняет код и может привести к неожиданным результатам:
При использовании оператора сравнения ==, одинаковые значения типа Boolean равны:
var x = false; var y = new Boolean(false); // (x == y) будет истинным (true), потому что x и y имеют равные значенияОднако, при использовании оператора сравнения ===, одинаковые значения типа Boolean не будут равными, потому что оператор === ожидает совпадения как по значению, так и по типу.
var x = false; var y = new Boolean(false); // (x === y) будет ложным (false), потому что x и y не равны по типу (boolean и object)Или еще хуже. Объекты не сравниваются:
var x = new Boolean(false); var y = new Boolean(false); // (x == y) - false, потому что x и y разные объектыОбратите внимание на разницу между (x==y) и (x===y).
Сравнение двух объектов JavaScript всегда возвращает ложь (false).
Логические операторы и операторы сравнения
Логические операторы и операторы сравнения используются для проверки выражений и переменных на соответствие какому-либо условию.
Значения типа Boolean лежат в основе всех сравнений и условий в JavaScript.
Операторы сравнения
Операторы сравнения используются в логических выражениях для определения совпадения или различия между переменными или значениями.
Предположим, что у нас есть x = 5. Следующая таблица объясняет операторы сравнения:
Оператор Описание Выражение Возвращает == равно x == 8
x == 5
x == «5»false
true
true=== равно по значению и типу x === 5
x === «5»true
false!= не равно x != 8 true !== не равно ни по значению, ни по типу x !== 8
x !== 5
x !== «5»true
false
true> больше чем x > 8 false меньше чем x < 8 true >= больше или равно x >= 8 false меньше или равно x true Как это можно использовать
Операторы сравнения используются в выражениях условий для сравнения значений и принятия решения в зависимости от полученного результата:
if (age < 18) text = "Слишком молод";Подробнее об условных выражениях будет рассказано в следующей главе этого учебника.
Логические операторы
Логические операторы используются для определения логической связи между переменными или значениями.
Предположим, у нас есть x = 6 и y = 3. Следующая таблица объясняет логические операторы:
Оператор Описание Пример && И (x < 10 && y >1) - true || ИЛИ (x == 5 || y == 5) - false ! НЕ !(x == y) - true Оператор ! также используется для быстрого преобразования выражения к логическому значению:
!!"string" = true !!null = falseУсловный (тернарный) оператор
В JavaScript есть особый условный оператор, который присваивает переменной значение в зависимости от заданного условия.
имя_переменной= (условие) ?значение1:значение2
var voteable = (age < 18) ? "Слишком молод" : "Возраст подходит";В данном примере если в переменной age значение меньше 18, то переменной voteable будет присвоена строка "Слишком молод", в обратном случае переменной voteable будет присвоена строка "Возраст подходит".
Сравнение разных типов
Сравнение данных разного типа может привести к неожиданным результатам.
При сравнении строки и числа JavaScript будет преобразовывать строку в числовое значение. Пустая строка преобразуется в 0. Не числовая строка преобразуется в значение NaN, которое всегда равно false.
Выражение Значение 2 < 12 true 2 < "12" true 2 < "John" false 2 > "John" false 2 == "John" false "2" < "12" false "2" > "12" true "2" == "12" false При сравнении двух строк значение строки "2" будет больше значения строки "12", потому что в алфавитной последовательности 1 меньше 2.
Чтобы обезопасить результаты сравнения, переменные следует привести к надлежащему типу:
age = Number(age); if (isNaN(age)) < voteable = "Введенное значение не является числом"; >else
