【发布时间】:2019-03-10 18:46:26
【问题描述】:
这是我的代码 sn-p
pastActions = res['data']['list']['names']['blk'].cnt
但是我看到下面的错误
its throws error as Cannot read property 'cnt' of undefined
这是因为 cnt 的父级未定义,当这些属性 data 或 list 或 names 或 blk 未定义时,它甚至可能会失败。
我已将其替换如下
res['data'] && res['data']['list] && res['data']['list']['names'] && res['data']['list']['names']['blk'] && res['data']['list']['names']['blk'].cnt ? res['data']['list']['names']['blk'].cnt : '';
它可以工作,但是有没有优化的方法来检查它?
【问题讨论】:
-
嗯,你可以改用
.表示法,这样每关可以节省 3 个字符 -
嗨@HH837,你可以使用lodash _.get函数。当对象中的任何属性未定义时,您可以选择返回默认值。在这里查看:lodash.com/docs/4.17.10#get
Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place. -
try { pastActions = res.data.list.names.blk.cnt; } catch(e) { }
标签: javascript node.js angular ecmascript-6 ecmascript-5