We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
有人认为所谓的开悟就是准备好了在任何时候都能从容死去,这其实是错误的。真正的开悟,是在任何情形下都能从容地活着。 ——正冈子规《病床六尺》
有人认为所谓的开悟就是准备好了在任何时候都能从容死去,这其实是错误的。真正的开悟,是在任何情形下都能从容地活着。
——正冈子规《病床六尺》
本文为读 lodash 源码的第二十五篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
import isLength from './isLength.js'
《lodash源码分析之isLength》
isArrayLike 用来判断传入的值是否为类数组,源码很简单:
isArrayLike
function isArrayLike(value) { return value != null && typeof value != 'function' && isLength(value.length) }
从源码中可以看出,lodash 对类数组的概念判定很宽松,只要满足以下三个条件即可:
null
function
length
isLength
第一个条件不讲,第三个条件在上一篇文章《lodash源码分析之isLength》中已经讲清楚,现在来分析一下第二个条件。
为什么要判断值是不是函数呢?其实是因为函数上也会有 length 的属性,用来表示函数的形参个数。如:
function test (param) { console.log(param) } test.length // 1
因此在使用 isArrayLike 时,传入字符串返回的也会是 true,甚至传入 window 对象返回的也是 true 。因为 window 对象上有个 length 的属性,来表示 frame 和 iframe 的个数。
true
window
frame
iframe
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered:
No branches or pull requests
本文为读 lodash 源码的第二十五篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
依赖
《lodash源码分析之isLength》
源码分析
isArrayLike
用来判断传入的值是否为类数组,源码很简单:从源码中可以看出,lodash 对类数组的概念判定很宽松,只要满足以下三个条件即可:
null
function
length
属性必须通过isLength
函数的检测第一个条件不讲,第三个条件在上一篇文章《lodash源码分析之isLength》中已经讲清楚,现在来分析一下第二个条件。
为什么要判断值是不是函数呢?其实是因为函数上也会有
length
的属性,用来表示函数的形参个数。如:因此在使用
isArrayLike
时,传入字符串返回的也会是true
,甚至传入window
对象返回的也是true
。因为window
对象上有个length
的属性,来表示frame
和iframe
的个数。License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered: