标签归档:效率

使用Lodash编写安全、高效、优雅的JavaScript应用

在编写JS应用时,相信很多开发者会遇到“Uncaught TypeError: Cannot read property ‘prop’ of null” ,这种情况一般是没有做安全预判断。然而如果每一处都要加 obj != null && obj != undefined,不仅编写繁琐,也让代码的信噪比降低

为了让应用safety first,同时编写代码能够优雅高效,JS社区终于出现了一个瑞士军刀–Lodash。它的前身其实是underscore,这个和Lodash的概念差不多,其实API有点不一致而已,我主要介绍以下Lodash^_^

Lodash使用非常简单,你只需要记住它的变量是_就可以了(下划线)。在Lodash的编程哲学里,安全是第一的,而且融入了函数式编程。通过使用Lodash,你能感觉到它所有的API都可以大幅度减少无用的代码,让你的JS应用从1000行减到200行。我相信你会喜欢Lodash,而且在使用的过程中会逐渐理解贯彻它的编程哲学的

使用资料

Lodash官方仓库:
https://github.com/lodash/lodash

Lodash参考文档:
https://www.css88.com/doc/lodash/#_bindfunc-thisarg-partials

API简介

你在使用Lodash一段时间会发现,_.map既可以用在Object也可以用在Array,_.pickBy可以过滤Object不需要的key值,同时哪怕你传进去是null/undefined/NaN,Lodash也不会直接报错中断当前执行,而且返回一个空的结果(数字0,空数组,空对象等),可以确保你不会收到异常的情况。

在Lodash一些方法,比如_.difference,_.differenceBy, _.differenceWith,它们分别是默认处理函数,提供指定属性或者函数结果值来判断,手动编写compartor来进行判断

接下来,我介绍一些常用的API和它们的用途,其他的API如果感兴趣可以看上面的参考文档^_^

_.isNil

判断传参是不是null或者undefined,这对于常规的判断非常有用

_.get(object,path,[defaultvalue])

这是最常用的API,能够让你对一个数组或者数字,进行路径path的值访问,而且如果这个path的值是为空的,将会使用defaultvalue,举例:

// path的格式:
// 比如a.0.c对应的path路径就是 obj = {a:[{c: