Lodash 源码大全

本文旨在逐个解析Lodash库的源码,从内部函数到主要功能,详细讲解如add、after、before等函数的实现。通过学习,了解其严谨性和可复用性,并探讨TypeScript如何避免某些类型检查的代码。
摘要由CSDN通过智能技术生成

这个文章的意义在于 想学习loadsh的所有源码 从github的顺序开始看(严格按照顺序的,所以难免有集合函数数组这样的跳跃) loadsh很多运算我们也可以写出来,但是严谨性可复用性却没有loadsh强. __________________是分界线,因为lodash里面有很多内部函数,先解读内部函数再写主源码 1.add.js import createMathOperation createMathOperation 是lodash内部源码的一个创建Math的一个运算函数 验证参数将其转化为数字,如果其中有一个不能转换就返回可以转换的那个.如果两个都不行,就返回默认的,这里的0相当于报错. ^(* ̄(oo) ̄)^(安利一波TS TS的类型检测就应该不用这些代码了.) function createMathOperation(operator, defaultValue) { return (value, other) => { if (value === undefined && other === undefined) { return defaultValue } if (value !== undefined && other === undefined) { return value } if (other !== undefined && value === undefined) { return other } if (typeof value === 'string' || typeof other === 'string') { value = baseToString(value) other = baseToString(other) } else { value = baseToNumber(value) other = baseToNumber(other) } return operator(value, other) } }


const add = createMathOperation((augend, addend) => augend + addend, 0) //这里就是调用了 2.after.js 调用>n次后 运行 function after(n, func) { if (typeof func != 'function') { throw new TypeError('Expected a function') } return function(...args) { if (--n < 1) { return func.apply(this, args) } } } //基本的闭包和柯里化 这里注意的点就是 --这个自减顺序 3.

4.attempt.js import isError function attempt(func, ...args) { try { return func(...args) } catch (e) { return isError(e) ? e : new Error(e) } } //调用函数返回错误或者结果,就是一个检测工具函数 5.before.js function before(n, func) { let result if (typeof func != 'function') { throw new TypeError('Expected a function') } return function(...args) { if (--n > 0) { result = func.apply(this, args) } if (n <= 1) { func = undefined } return result } } //跟after是一个相反类似函数 6. 7.castArray.js //转化值为数组 function castArray(...args) { if (!args.length) { return [] } const value = args[0] return Array.isArray(value) ? value : [value] } 8.ceil.js

9.chunk.js //切割数组 function chunk(array, size) { size = Math.max(size, 0) const length = array == null ? 0 : array.length if (!length || size < 1) { return [] } le

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值