Что в js вернет true
Тип Boolean, логические операторы и операторы сравнения
Логический тип Boolean в JavaScript представляет одно из двух значений: true (истина) или false (ложь).
Значения Boolean
В программировании очень часто бывают ситуации, когда требуется тип данных, который может принимать одно значение из двух, вроде
Именно для этих случаев в JavaScript существует логический тип данных Boolean, который может принимать только значение true (истина) или false (ложь).
Функция Boolean()
Чтобы определить, является ли выражение (или переменная) истиной (возвращает значение true), можно воспользоваться функцией Boolean():
Или можно сделать еще проще:
Все имеет «значение» True или False
Любое значение отличное от 0 имеет логическое значение true.
Логическое значение 0 (ноль) — false.
Логическое значение «» (пустая строка) — false.
Логическое значение undefined — false.
Логическое значение null — false.
Логическое значение false — false.
Логическое значение NaN — false.
Значения типа Boolean могут быть объектами
Обычно, логические значения типа Boolean определяются примитивными литералами:
Однако, в JavaScript при помощи ключевого слова new логические значения также можно определить и как объекты:
Тем не менее, не определяйте значения типа Boolean как объекты. Это замедляет скорость выполнения скрипта. Кроме этого, ключевое слово new в данном случае усложняет код и может привести к неожиданным результатам:
При использовании оператора сравнения ==, одинаковые значения типа Boolean равны:
Однако, при использовании оператора сравнения ===, одинаковые значения типа Boolean не будут равными, потому что оператор === ожидает совпадения как по значению, так и по типу.
Или еще хуже. Объекты не сравниваются:
Обратите внимание на разницу между (x==y) и (x===y).
Сравнение двух объектов JavaScript всегда возвращает ложь (false).
Логические операторы и операторы сравнения
Логические операторы и операторы сравнения используются для проверки выражений и переменных на соответствие какому-либо условию.
Значения типа Boolean лежат в основе всех сравнений и условий в JavaScript.
Операторы сравнения
Операторы сравнения используются в логических выражениях для определения совпадения или различия между переменными или значениями.
Предположим, что у нас есть x = 5. Следующая таблица объясняет операторы сравнения:
Условный (тернарный) оператор
В JavaScript есть особый условный оператор, который присваивает переменной значение в зависимости от заданного условия.
имя_переменной= (условие) ?значение1:значение2
В данном примере если в переменной age значение меньше 18, то переменной voteable будет присвоена строка «Слишком молод», в обратном случае переменной voteable будет присвоена строка «Возраст подходит».
Сравнение разных типов
Сравнение данных разного типа может привести к неожиданным результатам.
При сравнении строки и числа JavaScript будет преобразовывать строку в числовое значение. Пустая строка преобразуется в 0. Не числовая строка преобразуется в значение NaN, которое всегда равно false.
Выражение | Значение |
---|---|
2 «John» | false |
2 == «John» | false |
«2» «12» | true |
«2» == «12» | false |
При сравнении двух строк значение строки «2» будет больше значения строки «12», потому что в алфавитной последовательности 1 меньше 2.
Чтобы обезопасить результаты сравнения, переменные следует привести к надлежащему типу:
Может ли в JavaScript конструкция (a==1 && a==2 && a==3) оказаться равной true?
Сегодня мы разберём этот код и постараемся его понять.
Вот он:
В чём тут подвох?
На самом деле, ничего удивительного тут нет. Просто этот код использует две базовые концепции JavaScript:
Оператор нестрогого равенства
Метод valueOf()
Кроме того, мы можем использовать typeOf() для проверки того, действительно ли valueOf() возвращает объект:
Пишем свой valueOf()
Самое интересное при работе с valueOf() заключается в том, что мы можем этот метод переопределить для того, чтобы конвертировать с его помощью объект в примитивное значение. Другими словами, можно использовать valueOf() для возврата вместо объектов строк, чисел, логических значений, и так далее. Взгляните на следующий код:
Всё это ведёт к следующему:
Теперь поговорим о том, почему это важно.
Операция нестрогого равенства и приведение типов
При вычислении результата операции нестрогого равенства для операндов различных типов JavaScript попытается произвести приведение типов — то есть он сделает попытку привести (конвертировать) операнды к похожим типам или к одному и тому же типу.
Неужто задача решена? Пока нет, но осталось — всего ничего.
Оператор присваивания со сложением
Этот оператор просто добавляет значение правого операнда к переменной, которая находится слева, и присваивает этой переменной полученное значение. Вот простой пример:
Как видите, каждый раз, когда мы используем оператор присваивания со сложением, значение переменной увеличивается! Используем эту идею в нашем методе valueOf() :
После того, как в код внесено это изменение, мы наконец можем всё опробовать:
Пошаговый разбор
Возможно, полезно будет рассмотреть происходящее пошагово:
Итоги
Полагаем, примеры, подобные разобранному выше, помогают, во-первых, лучше изучить базовые возможности JavaScript, а во-вторых — не дают забыть о том, что в JS не всё является тем, чем кажется.
Уважаемые читатели! Если вы знаете о каких-нибудь курьёзах из области JavaScript — просим ими поделиться.
Возвращаемые значения функций
Для нас в этом курсе имеется ещё один важный момент. Посмотрим внимательнее на возвращаемое значение функций. Некоторые функции не возвращают существенное значение после завершения, но некоторые возвращают, и важно понимать что это за значение и как использовать его в своём коде и как сделать так чтобы ваши собственные функции возвращали полезные значения. Мы объясним всё это ниже.
Необходимые навыки: | |
---|---|
Цели: | Понять что такое возвращаемое значение функции и как его использовать. |
Что из себя представляют возвращаемые значения?
Если вы посмотрите на функцию replace() на MDN reference page, вы увидите секцию под названием Return value. Очень важно знать и понимать какие значения возвращаются функциями, так что мы пытаемся включать эту информацию везде, где это возможно.
Некоторые функции не возвращают значения( на наших reference pages, возвращаемое значение обозначено как void или undefined в таких случаях). Например, в функции displayMessage() которую мы сделали в прошлой статье, в результате выполнения функции не возвращается никакого значения. Функция всего лишь отображает что-то где-то на экране.
В основном, возвращаемое значение используется там, где функция является чем-то вроде вспомогательного звена при вычислениях. Вы хотите получить результат, который включает в себя некоторые значения. Эти значения вычисляются функцией, которая возвращает результат так, что он может быть использован в следующих стадиях вычисления.
Использование возвращаемых значений в ваших собственных функциях
Тоже самое может быть написано вот так:
Но первую версию написать быстрее и она более компактна.
Мы возвращаем результат вычисления Math.floor(Math.random()*number) каждый раз когда функция вызывается. Это возвращаемое значение появляется в момент вызова функции и код продолжается. Так, например, если мы выполним следующую строчку:
и 3 вызова random() вернут значения 500, 200 и 35, соответственно, строчка будет выполнена как если бы она была такой:
Активное обучение: наша собственная, возвращающая значение функция
Теперь напишем нашу собственную возвращающую значение функцию.
Как правильно использовать return в JavaScript функции
Для чего необходим оператор return в JavaScript функции? Как его использовать внутри функции и что можно делать с возвращаемыми значениями? Сегодня мы поговорим об этом.
Для чего необходим return в JavaScript функции
Это позволяет сделает код более модульным. Есть много разных подходов к написанию кода. Но чаще всего return в JavaScript функции нужен для организации модульного подхода.
Бывают случаи, когда нет возможности применить тернарный оператор или существует необходимость использовать один и тот же фрагмент кода в нескольких местах в рамках одного проекта. В этом случае лучше обернуть его в отдельную функцию. Если речь идет о создании длиной HTML-строки, то наилучший вариант — сохранить ее в отдельной функции для удобства чтения.
Давайте рассмотрим на несколько примеров.
Возврат строки, числа или другого типа данных
Представим, что мы используем какое-то имя (name), введенное пользователем, для создания некоторой HTML-разметки в пользовательском интерфейсе.
В этом примере можно было бы поступить следующим образом. Сначала создать собственную функцию и вписать внутрь эти строки. После этого можно использовать return, который вернет элемент p в переменной. Это позволит использовать ее в коде в дальнейшем.
Конечно, это достаточно простой и даже глупый пример, потому что return в JavaScript функции возвращает всего лишь один абзац. Но по мере увеличения объема кода растет и полезность этого подхода.
Возврат логического типа данных с помощью return в JavaScript функции
Return может быть очень полезным, когда требуется выполнить более сложные проверки, выходящие за рамки простого if … else.
Например, в веб-приложении, которое показывает приобретенные пользователями электронные книги и курсы. Нужно проверить, приобрели ли они продукт, у которого есть доступ к приватной рабочей области Slack. Если да, то пользователь видит кнопку для получения ссылки для приглашения. В противном случае то вместо этого высвечивается сообщение.
Объект «данных о покупке» (data) выглядит примерно так:
Далее необходимо сделать проверку на соответствие одному или нескольким из следующих условий:
Если любое из этих условий выполнено, можно показать пользователю кнопку.
Такой подход основан на слишком сложной логике. Такой код является рабочим, но он не очень читабельный и его трудно поддерживать. Очень легко ошибиться в одном из условий.
В этом случае return в JavaScript функции поможет упростить этот подход. Он вернет true, если у пользователя есть доступ, и false, если нет. В этом случае происходит отдельно запуск каждого условия для проверки с возвратом true или false.
Да, этот код выглядит длиннее. Но он более читабельный. Его легко изменять и контролировать, какие условия проверяются. А читабельность важнее краткости.
Теперь давайте вернемся к функции renderSlack(). И если условия предоставления доступа к Slack когда-либо изменятся, достаточно просто обновить функцию hasSlack(), не внося изменений в остальной код.
Заключение
Надеюсь, это поможет вам понять, как можно использовать return в JavaScript функции. Это организационный инструмент, который позволяет структурировать код и сделать его более читабельным.
IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.
Значение true JavaScript. Значение false JavaScript. Типы данных JavaScript
Сегодняшняя публикация посвящена логическим значениям языка JavaScript. В отличие от других типов данных JavaScript логических значений или значений логической истинности всего два. Это значение true JavaScript и соответственно значение false JavaScript. Значение true JavaScript можно понимать как включено или как единица, да собственно значение true в JavaScript преобразовывается в единицу. Значение false JavaScript можно для себя интерпретировать как состояние выключено или как ноль, значение false в JavaScript преобразуется в ноль.
Можно сказать, что логические значения говорят об истинности или ложности какого-либо утверждения. Значение true в JavaScript говорит о том, что утверждение истинно, а значение false в JavaScript говорит о том, что утверждение ложно. Этот тип данных в JavaScript называется логическим, а true и false являются литералами логического типа данных JavaScript.
Значение true JavaScript. Значение false JavaScript.
Как я уже написал: логические значения в JavaScript являются индикаторами, значение true JavaScript говорит о том, что результат выполняемой операции является истинное значение, а значение false JavaScript говорит о том, что результатом выполняемой операции является ложное значение, не соответствующее действительности. Как и у любого типа данных JavaScript, у логические значений есть свои операторы, их называют логические операторы JavaScript, логические они потому, что могут работать только со значениями true JavaScript и false JavaScript.
Чаще всего значения true и false используются вместе с инструкцией условием if/else JavaScript, в цикле с постуловием while JavaScript. Результатом работы операторов равенства, неравенства JavaScript будет значение true или false. Результатом работы операторов сравнения JavaScript также будут являться значение true или false и т.д.
Давайте обратимся к примеру и посмотрим, где нам могут понадобиться значения false и true JavaScript. Пример как обычно притянут за уши и используется только для демонстрации. У нас есть переменная num, в которой хранится число 8 и переменная new_num, в которой хранится число 5, но мы, к сожалению, забыли, в какой переменной какое число хранится. А нам необходимо увеличить значение переменной в которой хранится 5 на единицу.
Мы можем взять любую из переменных и проверить равно ли ее значение 5, при помощи оператора равенства JavaScript (==), если проверка даст положительный результат, то мы получим значение true JavaScript, если же наоборот, то мы получим значение false JavaScript.
Но, без инструкции условия if/else JavaScript мы не сможем выполнить увеличения нужного нам значения на единицу при помощи арифметического оператора JavaScript сложения. Таким образом, наш пример будет изменен:
Инструкция if проверяет равно ли значение переменной 5 и если оно равно 5, то возвращает значение true JavaScript, соответственно выполняется JavaScript выражение num=num+1, если же результатом инструкции if является значение false JavaScript, то есть num не равно пяти, то будет выполнено второе JavaScript выражение, которое написано сразу после ключевого слова else.
Значение true JavaScript и значение flase JavaScript можно интерпретировать не только как истина или ложь, но например и как «да» и «нет», включено или выключено. С логическими значениями true и false можно выполнять операции булевой алгебры, которые представлены логическими операторами JavaScript и поразрядными операторами JavaScript.
Преобразование значения true JavaScript. Преобразование значения false JavaScript.
Начнем с того, что любой тип данных JavaScript может быть преобразован в логическое значение: в значение true JavaScript и в значение false JavaScript. Соответственно и логические значения JavaScript могут быть преобразованы в любой другой тип данных. Как и в случае с преобразованием строку в число и число в строку JavaScript, логический тип данных JavaScript может быть преобразован автоматически, по мере выполнения программы.
Если мы преобразуем логические значения в JavaScript числа, то значение true JavaScript будет преобразовано в 1, а значение false JavaScript будет преобразовано в 0. Если мы будем производить преобразование в строку, то значение false преобразуется в JavaScript строку “false”, а значение true в JavaScript строку “true”.
Преобразование логических значений очень легко запомнить, поскольку в JavaScript всего пять значений, которые преобразуются в false: undefined, null, NaN, 0 и пустая строка. Специальные значения JavaScript null и undefined, нечисло NaN, ноль и пустая строка – это все является false в JavaScript, любой другой тип данных в JavaScript интерпретируется как значение true. Все объекты, все массивы, все функции, все остальные числа и строки, преобразуются и работают как true JavaScript, а пять выше названных значения преобразуются и работают как false JavaScript.
Для явного преобразования в логический тип данных можно использовать JavaScript функцию Boolean (), эта функция принимает аргумент, который она преобразовывает в логическое значение: