背景:
开发中有很多时候,我们需要从接口返回的数据,或者是点击事件中拿到一个值来做相应的处理,例如数组的遍历,赋值,数据的过滤等,但是往往我们不能确认当前这种第三方返回的值是否一定存在,如果不存在,而对一个为 undefined,或者 null 的值进行遍历等,就会在控制台打印出很多报错;
解决方法:
一:数组的遍历:
通过对数组遍历前数组添加“ ?”,可以在当 goodsArr 为 undefined时候,不报错,如果不加则会报出TYPEERR。
二:接口返回数据的赋值:
在小程序中,通常会对返回数据进行 this.setData赋值,可以将返回的数据前添加 “ ?”,防止不必要的bug,因为后端如果处理不严谨可能对一个空数组返回的是undefined或者null,而不是空数组[];
三:对事件对象的取值:
在从事件对象e中取值中,很容易出现当前事件对象e中并不存在当前值的情况,所以也需要在取值中通过 “ ?”来避免出现不必要的bug和报错;
总结:
在js中其实很多地方都可以通过合理的运用 “ ?”,来避免一些第三方或者未知情况中拿到值进行操作,但是当值为undefined的bug;