2013-08-19 3 views
2

Проверка простых переменных определяются производится легко с myVar?Проверьте, определено ли вложенное свойство в CoffeeScript?

Вопрос заключается в том, есть хороший способ в CoffeeScript, чтобы проверить, является ли вложенное свойство определяется?

например.

if property.p.p.p.p? 
    alert "Hello" 

Бросает ReferenceError если property.p.p.p (или property.p.p | property.p) не определены.

Это что-то, что мы должны рекурсивно проверить или есть хорошая функция?

ответ

12
if property?.p?.p?.p?.p? 
    alert "Hello" 

Делает то, что вы хотите.

, что приводит к

var _ref, _ref1, _ref2; 

if ((typeof property !== "undefined" && property !== null ? (_ref = property.p) != null ? (_ref1 = _ref.p) != null ? (_ref2 = _ref1.p) != null ? _ref2.p : void 0 : void 0 : void 0 : void 0) != null) { 
    alert("Hello"); 
} 

в JS.

Соответствующая часть из документации:

Аксессор вариант экзистенциального оператора?. может использоваться для впитывания нулевых ссылок в цепочке свойств. Используйте его вместо доступа к точкам. в случаях, когда базовое значение может быть нулевым или неопределенным. Если все свойства существуют, тогда вы получите ожидаемый результат, если цепочка сломана, возвращается неопределенное значение вместо TypeError, которое было бы обращено в противном случае.

+0

Это очень мило! Спасибо. – ocodo

+0

Это то, почему coffeescript замечательный. – jcollum