Какие из перечисленных значений являются falsy js
Перейти к содержимому

Какие из перечисленных значений являются falsy js

  • автор:

какие значения в js являются ложными

Для проверки значений на их истинность или ложность можно использовать двойное отрицание !! .

Итак, следующие значения будут приведены к false :

  • собственно, false :
console.log(!!false); // => false 
console.log(!!0); // => false 
  • пустая строка » :
console.log(!!''); // => false 
  • undefined :
console.log(!!undefined); // => false 
console.log(!!null); // => false 
console.log(!!NaN); // => false 

Нужно помнить, что пустая функция, а также пустой объект и пустой массив будут приведены к true :

console.log(!!(() => <>)); // => true console.log(!!<>); // => true console.log(!![]); // => true 

Ложноподобное значение

Ложноподобное (falsy) значение — значение, которое становится false в булевом контексте.

JavaScript использует преобразование типов, чтобы привести значение к булевому типу, там, где это требуется (например, в условных конструкциях и циклах.

В следующей таблице приведен полный список ложноподобных значений JavaScript:

Значение Описание
false Ключевое слово false .
0 Ноль Number (к нему также относятся 0.0 , 0x0 и т.д.).
-0 Отрицательный ноль типа Number (к нему также относятся -0.0 , -0x0 и т.д.).
0n Ноль типа BigInt (также 0x0n ). Обратите внимание, что не может быть негативного нуля типа BigInt — отрицательный 0n равняется 0n .
«» , » , « Значение, содержащее пустую строку .
null null — отсутствие какого-либо значения.
undefined undefined — примитивное значение.
NaN (en-US) NaN — значение, не являющиеся числом.
document.all Объекты считаются ложноподобными тогда и только тогда, когда у них есть внутренний слот [[IsHTMLDDA]]. Этот слот есть только в объекте document.all , и его нельзя задать через JavaScript.

Примеры

Примеры ложноподобных значений в JavaScript (которые в булевых контекстах принудительно приводятся к false и таким образом минуют блок if ):

if (false) if (null) if (undefined) if (0) if (-0) if (0n) if (NaN) if ("") 

Оператор логического И, &&

Если первый операнд ложноподобен, то он будет возвращён в качестве результата:

false && "dog"; // ↪ false 0 && "dog"; // ↪ 0 

Смотрите также

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 3 авг. 2023 г. by MDN contributors.

Your blueprint for a better internet.

MDN

Support

  • Product help
  • Report an issue

Our communities

Developers

  • Web Technologies
  • Learn Web Development
  • MDN Plus
  • Hacks Blog
  • Website Privacy Notice
  • Cookies
  • Legal
  • Community Participation Guidelines

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.

JavaScript: Предикаты

Подобные функции называют предикатами. Функции-предикаты (или функции-вопросы) отвечают на какой-то вопрос и всегда (без исключений!) возвращают либо true , либо false .

Предикаты во всех языках принято именовать особым образом для простоты анализа. В JavaScript предикаты, как правило, начинаются с префикса is , has или can , но не ограничены этими словами. Примеры:

  • isInfant() — «младенец ли?»
  • hasChildren() — «есть ли дети?»
  • isEmpty() — «пустой ли?»
  • hasErrors() — «есть ли ошибки?»

Функция может считаться предикатом только если она возвращает boolean.

Давайте напишем ещё одну функцию-предикат. Она принимает строку и проверяет, является ли она словом ‘Castle’ :

const isCastle = (type) => type === 'Castle'; console.log(isCastle('Sea')); 
false

Задание

Напишите функцию isMister() , которая принимает строку и проверяет, является ли она словом ‘Mister’ .

isMister('Mister'); // true isMister('Miss'); // false 

Упражнение не проходит проверку — что делать? ��

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

  • Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.

В моей среде код работает, а здесь нет ��

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя ��

Это нормально ��, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.

В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно ��

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.

Полезное

Определения

  • Предикат — выражение, отвечающее на вопрос «да» или «нет» с помощью типа boolean.

Какие из перечисленных значений являются falsy js

Все используемые данные в javascript имеют определенный тип. В JavaScript имеется восемь типов данных:

  • String : представляет строку
  • Number : представляет числовое значение
  • BigInt : предназначен для представления очень больших целых чисел
  • Boolean : представляет логическое значение true или false
  • Undefined : представляет одно специальное значение — undefined и указывает, что значение не установлено
  • Null : представляет одно специальное значение — null и указывает на отсутствие значения
  • Symbol : представляет уникальное значение, которое часто применяется для обращения к свойствам сложных объектов
  • Object : представляет комплексный объект

Первые семь типов представляют примитивные типы данных. Последний тип — Object представляет сложный, комплексный тип данных, который состоит из значений примитивных типов или других объектов. Рассмотрим основные примитивные типы данных.

Числовые данные

Number

Тип Number представляет числа в JavaScript, которые могут быть целыми или дробными:

  • Целые числа, например, 35. Мы можем использовать как положительные, так и отрицательные числа. Диапазон используемых чисел: от -2 53 до 2 53
  • Дробные числа (числа с плавающей точкой). В качестве разделителя дробной и целой части применяется точка, например, 3.5575 . Опять же можно использовать как положительные, так и отрицательные числа. Для чисел с плавающей точкой используется тот же диапазон: от -2 53 до 2 53
const x = 45; const y = 123.897; const z = -0.123;

JavaScript поддерживает возможность определять числа в двоичной, восьмеричной и шестнадцатеричной системах, что очень удобно, если нам предстоить проводить поразрядные операции с отдельными битами числа. Для определения числа в двоичной системе, перед числом указывается префикс 0b :

const num1 = 0b1011; // число 11 в десятичной системе console.log(num1); // 11

В данном случае константа num1 равна 0b1011 , что в десятичной системе эквивалентно 11.

Для определения числа в восьмеричной системе, перед числом указывается префикс 0o :

const num1 = 0o11; // число 9 в десятичной системе console.log(num1); // 9

Для определения числа в шестнадцатеричной системе, перед числом указывается префикс 0x :

const num1 = 0xff; // число 255 в десятичной системе console.log(num1); // 255 const num2 = 0x1A; // число 26 в десятичной системе console.log(num2); // 26

Начиная со стандарта ECMA2021 в JavaScript для увеличения читабельности в качестве разделителя между разрядами можно использовать символ подчеркивания _:

const num1 = 1234567; const num2 = 123_4567; // число равное num1 const num3 = 1234567890; const num4 = 12_3456_7890; // число равное num3
Тип BigInt

Тип BigInt добавлен в последних стандартах JavaScript для представления очень больших целых чисел, которые выходят за пределы диапазона типа number. Это не значит, что мы не можем совсем работать с большими числами с помощью типа number, но работа с ними в случае с типом number будет сопряжена с проблемами. Рассмотрим небольшой пример:

let num = 9007199254740991 console.log(num); // 9007199254740991 console.log(num + 1); // 9007199254740992 console.log(num + 2); // 9007199254740992

Здесь переменной num присваивается максимальное значение. И далее прибавляем к ней некоторые значения и выводим на консоль результат. И результаты могут нас смутить, особенно в случае прибавления числа 2.

Стоит отметить, что тип Number ограничен, хотя и позволяет оперировать довольно большим диапазоном чисел. В частности, мы можем использовать специальные константы Number.MIN_VALUE и Number.MAX_VALUE для проверки минимального и максимального возможных значений для типа Number:

console.log(Number.MIN_VALUE); // 5e-324 console.log(Number.MAX_VALUE); // 1.7976931348623157e+308

Например, рассмотрим следующий пример:

const num = 9223372036854775801; console.log(num); // 9223372036854776000

В силу ограничений типа Number на консоли мы увидим несколько другое число, нежели мы присвоили константе num. Это может негативно влиять на точность в вычислениях. И для подобных подобных чисел как раз предназначен тип BigInt . Для определения числа как значения типа BigInt в конце числа добавляется суффикс n :

let dimension = 19007n; const value = 2545n;

Например, изменим из предыдущего примера тип number на bigint:

const num = 9223372036854775801n; console.log(num); // 9223372036854775801n

Теперь консоль выводит корректный результат.

Тип Boolean

Тип Boolean представляет булевые или логические значения true (верно) и false (ложно):

const isAlive = true; const isDead = false;

Строки String

Тип String представляет строки. Для определения строк применяются кавычки, причем, можно использовать как двойные, так одинарные, так и косые кавычки. Единственно ограничение: тип закрывающей кавычки должен быть тот же, что и тип открывающей, то есть либо обе двойные, либо обе одинарные.

const user = "Tom"; const company = 'Microsoft'; const language = `JavaScript`; console.log(user); console.log(company); console.log(language);

Если внутри строки встречаются кавычки, то мы их должны экранировать слешем. Например, пусть у нас есть текст «Бюро «Рога и копыта»» . Теперь экранируем кавычки:

const company = "Бюро \"Рога и копыта\"";

Также мы можем внутри стоки использовать другой тип кавычек:

constcompany1 = "Бюро 'Рога и копыта'"; const company2 = 'Бюро "Рога и копыта"';

Также строка может содержать специальные символы — управляющие последовательности, которые интерпретируются определенным образом. Самые распространенные последовательности — это «\n» (перевод на другую строку) и «\t» (табуляция). Например:

const text = "Hello METANIT.COM\nHello\tWorld"; console.log(text);

При выводе на консоль текст из константы text будет интерпретироваться следующим образом:

Hello METANIT.COM Hello World
Интерполяция

Использование косых кавычек позволяет нам применять такой прием как интерполяция — встраивать данные в строку. Например:

const user = "Tom"; const text = `Name: $`; console.log(text); // Name: Tom

Для встраивания значений выражений (например, значений других переменных и констант) в строку перед выражением ставится знак доллара $ , после которого в фигурных скобках указывается выражение. Так, в примере выше $ означает, что в этом месте строки надо встроить значение переменной user .

Подобным образом можно встраивать и больше количество данных:

const user = "Tom"; const age = 37; const isMarried = false; const text = `Name: $ Age: $ IsMarried: $`; console.log(text); // Name: Tom Age: 37 IsMarried: false

Кроме интерполяции косые кавычки позволяют определять многострочный текст:

const text = `Мы все учились понемногу Чему-нибудь и как-нибудь, Так воспитаньем, слава богу, У нас немудрено блеснуть.`; console.log(text);

Консольный вывод браузера:

Мы все учились понемногу Чему-нибудь и как-нибудь, Так воспитаньем, слава богу, У нас немудрено блеснуть.

null и undefined

undefined указывает, что значение не определено или не установлено. Например, когда мы только определяем переменную без присвоения ей начального значения, она представляет тип undefined:

let email; console.log(email); // выведет undefined

Присвоение значение null означает, что у переменной отсутствует значение:

let email; console.log(email); // undefined email = null; console.log(email); // null

Стоит отметить, что хотя в принципе можно переменной присвоить значение undefined , как в следующем случае:

let email = "tome@mimimail.com"; email = undefined; // установим тип undefined console.log(email); // undefined

Но основной смысл undefined состоит в том, что переменная неинициализирована, что обычно происходит до первого присвоения ей какого-либо значения. Поэтому обычно не предполагается, что переменной явным образом будет присваиваться значение undefined . В тоже время этот тип может быть полезен — мы можем использовать его на проверку инициализации переменной. Но если же нам надо указать, что у переменной нет никакого значения, то ей присваивается null , а не undefine .

object

Тип object представляет сложный объект. Простейшее определение объекта представляют фигурные скобки:

const user = <>;

Объект может иметь различные свойства и методы:

const user = ; console.log(user.name);

В данном случае объект называется user, и он имеет два свойства: name и age, которые в качестве значения принимают данные других типов. Это краткое описание объектов, более подробно объекты мы рассморим в последующих статьях.

Слабая/динамическая типизация

JavaScript является языком со слабой и динамической типизацией. Это значит, что переменные могут динамически менять тип. Например:

let id; // тип undefined console.log(id); id = 45; // тип number console.log(id); id = "45"; // тип string console.log(id);

Несмотря на то, что во втором и третьем случае консоль выведет нам число 45, но во втором случае переменная id будет представлять число, а в третьем случае — строку.

Оператор typeof

С помощью оператора typeof можно получить тип переменной, что может быть полезно, когда в зависимости от типа переменной необходимо выполнить те или иные действия:

let id; console.log(typeof id); // undefined id = 45; console.log(typeof id); // number id = 45n; console.log(typeof id); // bigint id = "45"; console.log(typeof id); // string

Стоит отметить, что для значения null оператор typeof возвращает значение «object», несмотря на то, что согласно спецификации JavaScript значение null представляет отдельный тип.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *