使用myVar?
问题是,CoffeeScript中是否有一种很好的方法来检查是否定义了嵌套属性?
e.g。
if property.p.p.p.p?
alert "Hello"
如果未定义ReferenceError
(或property.p.p.p
| property.p.p
),则会引发property.p
。
这只是我们必须递归检查的东西,还是有一个很好的功能?
答案 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。