纵横研究院前端基础技术专题社区

犀牛书学习总结1

2020-07-10  本文已影响0人  小鸟游露露

犀牛书学习总结

前言

此处仅仅记录我在看犀牛书学习时遇到的一些问题、之前没有掌握的、使用不熟练的方法,还会记录一下个人认为比较有趣的实现方法。

数组章节

1.属性方法错误obj.arr.length

访问不存在的属性会报undefined
而访问的obj不存在时,再访问obj的属性就会报错。这是因为obj不存在等于undefined和null,这二者是没有属性的。

使用情景

if (obj.arr.length) { ... }

obj代表对象;arr代表数组
若obj是动态获取并在之前是{ } || undefined || null 。则报无法读取未定义属性length的错误。

解决方法1(不便利):把arr数组从obj中抽离出来单独初始化,判断时用arr.length来判断。

解决方法2(冗余但易懂):双层if嵌套

if (obj) {
    if (obj.arr) {
        let len = obj.arr.length
    }
}

先对obj对象进行判断是否不为空,再对obj.arr判断是否长度是否不为0;条件都满足才会使用obj.arr.length,这样就不会报错了。但区区一个获取数组length的代码就写两层if嵌套确实不美观。

解决方法3:&&运算符的短路行为

let len = obj && obj.arr && obj.arr.length

相当于方法2的升级版,代码简化且美观。

总结

未完待续。。。

上一篇 下一篇

猜你喜欢

热点阅读