犀牛书学习总结
前言
此处仅仅记录我在看犀牛书学习时遇到的一些问题、之前没有掌握的、使用不熟练的方法,还会记录一下个人认为比较有趣的实现方法。
数组章节
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的升级版,代码简化且美观。
总结
未完待续。。。
网友评论