lodash.isArray

发布于 2022-09-12 13:41:21 字数 183 浏览 46 评论 0

image.png

源码就一句话
image.png

在lodash有必要为了这一句话单独弄个方法吗,直接用js自带的不就好了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

话少心凉 2022-09-19 13:41:21

这个或许只是现在的代码吧。
猜测有可能以前不是这样的,比如以前还没有isArray这个函数的时候,lodash实现了,后来浏览器广泛支持了Array.isArray或者babel本身能够转译了,lodash才移除了原有实现,并且为了兼容旧项目中的lodash.isArray,保留了这个函数。


特意查看了一下lodash的历史版本,版本0.1.0中isArray实现如下:

var nativeIsArray = Array.isArray
var arrayClass = '[object Array]'
var isArray = nativeIsArray || function isArray(value) {
  return toString.call(value) == arrayClass;
};
画中仙 2022-09-19 13:41:21

Array.isArray不是自带的,低版本浏览器没这个方法

无名指的心愿 2022-09-19 13:41:21

反对楼上所有说是为了兼容的问题。

Array.isArray 是 ES5 引入的,发布于 2009 年;Lodash 第一个 RC 版 0.1.0 发布于 2013 年。到底谁兼容谁?

明明是出于方法命名的一致性考虑。

当你代码里都是 _.isBoolean()_.isDate()_.isNumber()_.isString() 的时候,当然 _.isArray() 写起来更顺一些。

¢好甜 2022-09-19 13:41:21

查了下lodash源码里isArray的实现:

  1. v3.10.1:

    var isArray = nativeIsArray || function(value) {
          return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
        };
  2. v4.17:

    var isArray = Array.isArray;

说明一开始lodash提供的是兼容的API isArray,后来把兼容代码去掉了,但是API isArray不能删啊,就造成了现在的样子了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文