Довольно часто мне приходится проверять, не является ли переменная ни null
, ни undefined
. Я вижу, что многие люди делают это следующим образом:
if (myVar) { // myVar is not null or undefined }
Однако теоретически вы можете получить ложноотрицательный результат, потому что myVar
может быть равно false
или 0
.
Я делаю эти проверки следующим образом:
if (typeof myVar !== 'undefined' && myVar!== null) { // myVar is not null or undefined }
Что довольно многословно. Поэтому я абстрагировал его в модуль npm под названием its-set. Приведенный выше пример можно переписать следующим образом:
import itsSet from 'its-set'; if (itsSet(myVar)) { // myVar is not null or undefined }
Затем, используя его, я довольно часто обнаруживал, что мне нужно проверять глубоко вложенные значения в объектах, чтобы увидеть, были ли они определены, а не нулевые. Например:
const deeplyNested = { foo: { bar: { baz: 0, // <- need to check if this is defined & not null }, }, };
Поэтому я сделал возможным проверку этих глубоко вложенных значений с помощью itsSet
, передав корневой объект в качестве первого параметра и строку селектора во втором — аналогично lodash.get
:
if (itsSet(deeplyNested, 'foo.bar.baz')) { // deeplyNested.foo.bar.baz is not null or undefined }
Это мой самородок на сегодня. Подскажите, как вы решаете эту проблему, друзья-ботаники.