求个酷炫的写法

guanpuwcg3 2014-08-28 02:33:30
场景很常见:要对一个值做非空校验,如

var a = {
b:'',
c:{
d:''
}
}
function e(a){}

e中要用d,那么非空校验是这么写的
if(a&&a.c&&a.c.d){
/*do something with d*/
}
当a,b,c,d都是真实属性名的时候这个if就很难看了,不知道有没有酷炫一点的做法
...全文
190 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
scscms太阳光 2014-08-28
  • 打赏
  • 举报
回复
谁玩你。 在try里直接访问最终变量而不会报错,不用一步步&&。
guanpuwcg3 2014-08-28
  • 打赏
  • 举报
回复
谢谢你们陪我玩,不过要工作了。代码丑就丑吧,能work就行,不纠结了。
scscms太阳光 2014-08-28
  • 打赏
  • 举报
回复
try{ if(a.c.w){ /*do something with d*/ } }catch(e){}
guanpuwcg3 2014-08-28
  • 打赏
  • 举报
回复
思路挺好的,但是如果有a.b.d存在而a.c.d不存在,这种情况会通过校验,但函数里用a.c.d还是会报错
xuzuning 2014-08-28
  • 打赏
  • 举报
回复
alert(/""/.test(JSON.stringify(a)) ? '有空值' : '合格'); alert(/"d":""/.test(JSON.stringify(a)) ? 'd为空' : '合格');

87,984

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧