2017-01-12 4 views
2

Мне было интересно, был ли более чистый способ выполнять и нулевой коалесценции и проверку на неопределенный?Безопасное совместное использование на JavaScript-ресурсе

К примеру, у меня есть переменная, которую я хочу, чтобы инициализировать значения свойства объекта, которые могут или не могут быть определены, в том случае, нуль лучше, потому что falseyness замечательная вещь

function DoWork(){ 
    var foobar = 
     typeof foo !== "undefined" 
     ? typeof foo["bar"] !== "undefined" 
      ? foo["bar"] || null 
      : null 
     : null; 

    ... 
} 

console.log(JSON.stringify(foobar)); //output is either foo["bar"]'s value or null 

Как вы видите, это становится беспорядочным. Мне любопытно, есть ли лучший способ справиться с такими вещами.

Спасибо!

ответ

2

Для этого нет встроенного синтаксиса. Библиотеки как lodash имеют глубокие получить методы, которые решают эту проблему:

_.get(x, 'deep.path.property') 

выше будет возвращать значение x.deep.path.property или undefined если любой объектов по пути, в том числе x, не существует.

Такую функцию написать не сложно. Вы можете сделать это как мыслящее упражнение и получить требуемый интерфейс (с null вместо undefined), или вы можете найти реализацию lodash.get (вам нужно будет следить за импортом).

Смежные вопросы