В динамическом мире JavaScript и его статически типизированной надстройки TypeScript понимание того, что представляет собой «ложное» или «нулевое» значение, может иметь решающее значение. Хотя легко догадаться, что такие значения, как 0
или пустая строка ""
, считаются «ложными», ситуация полна нюансов и крайних случаев, которые могут удивить даже опытных разработчиков. В этом подробном руководстве мы углубимся в исчерпывающий список значений «ложь» и «ничего», как в JavaScript, так и в TypeScript. Мы также включим пустые, но технически «правдивые» значения, поскольку иногда их можно ошибочно принять за «ложные».
Средний Джо может счесть это фальшивкой, но они просто пусты
- []: Пустой массив; технически «правдивый», но его часто ошибочно принимают за «ложный».
- {}: Пустой объект; технически «правдивый», но его часто ошибочно принимают за «ложный».
Значения JavaScript Zero-Like («Falsy»):
- 0: целый ноль; оценивается как ложь в логическом контексте.
- -0: отрицательный ноль; также имеет значение false в логическом контексте.
- "": Пустая строка; считается «ложным».
- null: представляет намеренное отсутствие какого-либо значения или объекта; «ложный».
- undefined: указывает на неинициализированную переменную или отсутствие значения; «ложный».
- NaN: означает «не число»; используется для неопределенных или непредставимых математических операций; «ложный».
- false: логическое значение false; явно «ложный».
- document.all: несколько архаичный и специфичный для браузера; «ложь», хотя typeof возвращает «объект».
- BigInt 0n: нулевая версия BigInt; оценивается как ложь в логическом контексте.
- void 0, void (любое выражение): представляет неопределенное значение; «ложный».
Значения TypeScript Zero-Like («Falsy»):
- 0 и -0: целое число и отрицательный ноль; «ложные» ценности.
- "": Пустая строка; «ложный».
- null: Намеренное отсутствие какого-либо значения; «ложный».
- не определено: неинициализированная переменная или отсутствие значения; «ложный».
- NaN: не-число; «ложный».
- false: логическое ложное значение; явно «ложный».
- void 0, void (любое выражение): представляет неопределенное значение; «ложный».
- 0n: версия нуля BigInt в TypeScript; «ложный».
- Тип void: хотя этот тип и не является значением, он указывает, что функция не возвращает значения, а переменная этого типа может иметь только неопределенное или нулевое значение.
Различия и нюансы
И JavaScript, и TypeScript используют один и тот же набор «ложных» значений, поскольку TypeScript — это надмножество JavaScript.
В TypeScript есть концепция типа void, который чаще всего используется для обозначения того, что функция не должна возвращать какое-либо значение. Хотя void — это тип, undefine — это значение, которое может содержать тип void.
И JavaScript, и TypeScript имеют одинаковый набор «ложных» значений, учитывая, что TypeScript является расширенным набором JavaScript. Однако TypeScript вводит в эту смесь некоторые дополнительные типы и особенности, такие как тип void
. Этот полный список служит основным руководством для понимания того, что оценивается как false
в логическом контексте, а что нет, помогая разработчикам писать более надежный и предсказуемый код. Независимо от того, новичок ли вы или опытный разработчик, знание этих «ложных» и «нулевых» значений может уберечь вас от потенциальных ошибок и головокружительных моментов в дальнейшем.