前端很容易遇到的一个大坑

避坑指南:在对一个对象取属性的时候(特别是对数组length属性时),写代码前的第一步是保证该对象不为null或者undefined,确认对象为“真”的情况下再做取对应属性值的操作。

前端开发时,我们经常会通过.操作符来获取属性值,这里有个坑很容易产生bug,特别是对数组length属性时,一不小心可能就会造成JS执行出错(这里先保密,后面具体说)导致页面崩溃

举个例子,比如后端接口返回数据中的data字段类型为数组,我们对该数组遍历进行一些处理的常用方式:

for(let i = 0; i < data.length; i++) {
	// doSomething...
}

以上代码在后端正常返回数组的情况下一点问题都没有。

但是,后端返回data为null时,JS执行相关代码时就会报错了:Uncaught TypeError: Cannot read property 'length' of null,页面直接白屏。这种错误在测试的时候很容易遗漏,从而导致线上bug产生。

所以,在工作中,我们在对一个对象取属性的时候,我们一定要注意:首要处理是保证该对象不为null或者undefined,确认对象为真的情况下再取对应的属性。 如下:

// 或者 if(data){ ... },保证data为“真值”,再进行下一步处理
if(Array.isArray(data)) {
	const len = data.length
	//doSomething...
}

这种类型的bug也给了我们一个警示:我们前端一定要有防御性编程的思维,后端定义的字段我们不能100%去信任它,而是要做好充分的错误和异常处理,这样就可以避免很多潜在的bug,提高我们前端代码的健壮性。

现实没我们预设的那么完美,其实80%的代码量都用在异常处理上了。

  • 19
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码飞_CC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值