для чего нужен логический оператор not javascript
Логические операторы в JS
Логические операторы используются вместе с ключевыми словами: for, if, while, do while и могут принимать только одно из двух значение true/false. Всего в JavaScript существуют три логических оператора: || (ИЛИ), && (И) и ! (НЕ). Рассмотрим на примерах, работу каждого из них.
Оператор || (ИЛИ)
Из двух булевых значение true/false оператор || (ИЛИ) всегда выберет истинное true. Из двух ложных значений, выберет ложное false. Проверим так ли это, выводя результаты в консоль.
console.log(true || true ); // true
console.log(true || false ); // true
console.log(false || true ); // true
console.log(false || false ); // false
Обычно в программировании оператор || (ИЛИ) используется вместе с условным оператором if для проверки истины у заданного условия. Но в JavaScript, применение данного оператора выходит за рамки традиционного. Даже если значение не является логическим типом данных, то оно все равно таковым станет для вычислительных целей. Например число 1 преобразуется в true, а 0, в false. В примере ниже, левая и правая часть идентичны.
if (1 || 0) // if (true || false)
Как сработает оператор || (ИЛИ), если по условию, в переменной должно оказаться одно из трех значений? Оператор вернет первое или последнее истинное значение.
let result = value 1 || value 2 || value 3;
На практике, оператор используется для вывода дефолтного значения, если с сервера не поступило никаких данных в переменную. И чтобы не оставлять просто пустое место на странице, проставляется дефолтное значение.
let value = object.property ||’default’;
Оператор && (И)
Оператор && (И) вернет true, если оба значения истинны, во всех остальных случаях вернется false. Условие выполнится, если оба значения будут истиной.
console.log( true && true ); // true
console.log( false && true ); // false
console.log( true && false ); // false
console.log( false && false ); // false
Оператор && (И) вернет первое ложное значение или последнее, если ничего не найдено.
let result = value 1 && value 2 && value 3;
console.log( 1 && 0 ); // 0
console.log( 1 && 2 ); // 2
console.log( null && ); // null
Оператор ! (НЕ) принимает один аргумент, который приводит к логическому типу true/false и возвращает противоположное значение. Здесь 0 преобразовался в false и вернул его антипод: true. Благодаря этой способности, двойное отрицание может использоваться, как приведение к логическому типу.
Приоритет && (И), выше чем у || (ИЛИ), а приоритет у ! (НЕ) самый высокий среди всех логических операторов. В математическом выражении, он всегда будет выполняться в первую очередь. Для изменения порядка вычислений, необходимо переменные заключать в скобки. Так, как мы делаем в математике. Все три оператора используются при задании сложных условий. Любое значение в JavaScript может быть преобразовано в логическое true, за исключением следующих:
console.log(undefined); // false
console.log(null); // false
console.log(0); // false
console.log(NaN); // false
console.log(«»); // false
Везде, где интерпретатор JavaScript ожидает получить логическое значение, любые значения автоматически будут преобразовываться в логические.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.
Логические операторы
Несмотря на своё название, данные операторы могут применяться к значениям любых типов. Полученные результаты также могут иметь различный тип.
Давайте рассмотрим их подробнее.
Оператор «ИЛИ» выглядит как двойной символ вертикальной черты:
В JavaScript, как мы увидим далее, этот оператор работает несколько иным образом. Но давайте сперва посмотрим, что происходит с булевыми значениями.
Существует всего четыре возможные логические комбинации:
Если значение не логического типа, то оно к нему приводится в целях вычислений.
Обычно оператор || используется в if для проверки истинности любого из заданных условий.
Можно передать и больше условий:
ИЛИ «||» находит первое истинное значение
Описанная выше логика соответствует традиционной. Теперь давайте поработаем с «дополнительными» возможностями JavaScript.
Расширенный алгоритм работает следующим образом.
При выполнении ИЛИ || с несколькими значениями:
Оператор || выполняет следующие действия:
Значение возвращается в исходном виде, без преобразования.
Другими словами, цепочка ИЛИ «||» возвращает первое истинное значение или последнее, если такое значение не найдено.
Это делает возможным более интересное применение оператора по сравнению с «чистым, традиционным, только булевым ИЛИ».
Получение первого истинного значения из списка переменных или выражений.
Сокращённое вычисление.
Операндами могут быть как отдельные значения, так и произвольные выражения. ИЛИ вычисляет их слева направо. Вычисление останавливается при достижении первого истинного значения. Этот процесс называется «сокращённым вычислением», поскольку второй операнд вычисляется только в том случае, если первого недостаточно для вычисления всего выражения.
Это хорошо заметно, когда выражение, указанное в качестве второго аргумента, имеет побочный эффект, например, изменение переменной.
В приведённом ниже примере x не изменяется:
Присваивание – лишь один пример. Конечно, могут быть и другие побочные эффекты, которые не проявятся, если вычисление до них не дойдёт.
Как мы видим, этот вариант использования || является «аналогом if «. Первый операнд преобразуется в логический. Если он оказывается ложным, начинается вычисление второго.
Оператор И пишется как два амперсанда && :
Что такое! (не) оператор в JavaScript?
контекст, в котором я видел это,
30 ответов
это ужасно неясный способ сделать преобразование типов.
таким образом, вы преобразуете значение в логическое, затем инвертируете его, а затем снова инвертируете.
!!expr возвращает логическое значение ( true или false ) в зависимости от truthiness выражения. Это имеет больше смысла при использовании на non-boolean типах. Рассмотрим эти примеры, особенно 3-й пример и далее:
Заварите чай:
в теории:
! определяет «истину», что значение не является:
!! определяет «истину» того, что такое значение не нет:
на практике:
каждая функция принимает аргумент для и attribute искать, но каждый из них возвращается различные значения, основанные на том, что определяют сравнения.
Но подождите, есть больше!
некоторые из вас, вероятно, заметили, что в этом конкретном примере можно просто проверить свойство, используя slightly более performant средства проверки, если объект в вопросе и свойства. Есть два способа сделать это:
мы отступать.
!! преобразует значение справа от него в эквивалентное логическое значение. (Подумайте, как бедный человек «набирает тип»). Его намерение обычно, чтобы донести до читателя, что код не заботится что значение в переменной, но что это «правды» стоимостью есть.
!!foo применяет унарный оператор not дважды и используется для приведения к булевому типу, аналогичному использованию унарного плюс +foo для приведения к номеру и объединения пустой строки »+foo приведение к строке.
вместо этих хаков вы также можете использовать функции конструктора, соответствующие примитивным типам (без используя new ) для явного приведения значений, т. е.
просто литье 🙁
просто сказать
(foo)
и все становится еще безумнее, в зависимости от вашего двигателя. WScript, например, выигрывает приз.
сравнение truthiness 🙂
но что, если у меня есть два значения, которые мне нужно проверить на равенство truthi / falsi-ness?
я не могу подумайте о большом, не придуманном случае использования для этого. Может быть, у вас есть» связанные » поля в форме?
Итак, если у вас есть истина для обоих или ложь как для имени супруга, так и для возраста, вы можете продолжить. В противном случае у вас есть только одно поле со значением (или очень ранний брак) и нужно создавать дополнительную ошибку в вашей errorObjects коллекция.
редактировать 24 Окт 2017:
3-й партии библиотеки, ожидающие явных логических значений
документы JSX предлагают вам быть более явными, писать самостоятельное комментирование кода, и использовать сравнение с силой логическое.
имейте в виду, что этой является соглашением JSX, не один присущий JavaScript.
но если вы видите странные 0 в оказанных JSX, думаю, потерять управление ложь.
это просто логический оператор NOT, дважды-он используется для преобразования чего-то в логическое, например:
он преобразует суффикс в логическое значение.
он имитирует поведение Boolean() функции литья. Первый NOT возвращает логическое значение независимо от того, какой операнд он задан. Второй NOT отрицает, что Boolean значение и так дает true логическое значение переменной. Конечный результат такой же, как при использовании Boolean() функция по значению.
Я думаю, стоит упомянуть, что условие в сочетании с логическим и / или не вернет логическое значение, но последний успех или первый сбой в случае && и первый успех или последний сбой в случае / / цепочки условий.
чтобы привести условие к истинному булеву литералу, мы можем использовать двойное отрицание:
Это не один оператор, это два. Это эквивалентно следующему и является быстрым способом приведения значения к boolean.
практическое использование
однако он имеет несколько практических применений.
Выражения и операторы
Эта глава описывает выражения и операторы языка JavaScript, такие как операторы присваивания, сравнения, арифметические, битовые, логические, строчные, и различные специальные операторы.
Полный и детальный список операторов и выражений также доступен в этом руководстве.
Операторы
В JavaScript есть следующие типы операторов. Данный подраздел описывает каждый тип и содержит информацию об их приоритетах друг над другом.
В свою очередь унарная операция использует один операнд, перед или после оператора:
Операторы присваивания
Существуют также составные операторы присваивания, которые используются для сокращённого представления операций, описанных в следующей таблице:
Деструктуризация
Операторы сравнения
Замечание: (=>) не оператор, а нотация Стрелочных функций.
Арифметические операторы
Арифметические операторы (en-US) используют в качестве своих операндов числа (также литералы или переменные) и в качестве результата возвращают одно числовое значение. Стандартными арифметическими операторами являются сложение (+), вычитание (-), умножение (*), и деление (/). При работе с числами с плавающей точкой эти операторы работают аналогично их работе в большинстве других языках программирования (обратите внимание, что деление на ноль возвращает бесконечность Infinity ). Например:
Кроме того, JavaScript позволяет использовать следующие арифметические операторы, представленные в таблице:
Битовые (поразрядные) операторы
Битовые операторы (en-US) обрабатывают свои операнды как последовательности из 32 бит (нулей и единиц), а не как десятичные, шестнадцатеричные или восьмеричные числа. Например, десятичное число 9 имеет двоичное представление 1001. Битовые операторы выполняют операции над таким двоичным представлением, но результат возвращают как обычное числовое значение JavaScript.
Следующая таблица обобщает битовые операторы JavaScript.
| Оператор | Использование | Описание |
|---|---|---|
| Побитовое И (en-US) | a & b | Возвращает единицу в каждой битовой позиции, для которой соответствующие биты обеих операндов являются единицами. |
| Побитовое ИЛИ (en-US) | a | b | Возвращает единицу в каждой битовой позиции, для которой один из соответствующих битов или оба бита операндов являются единицами. |
| Исключающее ИЛИ (en-US) | a ^ b | Возвращает единицу в каждой битовой позиции, для которой только один из соответствующих битов операндов является единицей. |
| Побитовое НЕ (en-US) | Заменяет биты операнда на противоположные. | |
| Сдвиг влево (en-US) | a | Сдвигает a в двоичном представлении на b бит влево, добавляя справа нули. |
| Сдвиг вправо с переносом знака (en-US) | a >> b | Сдвигает a в двоичном представлении на b бит вправо, отбрасывая сдвигаемые биты. |
| Сдвиг вправо с заполнением нулями (en-US) | a >>> b | Сдвигает a в двоичном представлении на b бит вправо, отбрасывая сдвигаемые биты и добавляя слева нули. |
Битовые логические операторы
Основной смысл работы битовых логических операторов состоит в следующем:





