检查CoffeeScript中是否定义了嵌套属性?

时间:2013-08-19 03:33:27

标签: coffeescript undefined

使用myVar?

检查是否可以轻松定义简单变量

问题是,CoffeeScript中是否有一种很好的方法来检查是否定义了嵌套属性?

e.g。

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

如果未定义ReferenceError(或property.p.p.p | property.p.p),则会引发property.p

这只是我们必须递归检查的东西,还是有一个很好的功能?

1 个答案:

答案 0 :(得分: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。

相关文档:

  

存在运算符的存取变体?可用于在属性链中吸收空引用。使用它代替点访问器。在基值可能为null或未定义的情况下。如果所有属性都存在,那么你将获得预期的结果,如果链断开,则返回undefined而不是否则会引发TypeError。