与vanilla JS语法相比,Lodash / Underscore语法的组合优势

我熟悉一些Lodash / Underscore方法,并且有一个关于语法的基本问题。


如果我有一个用户对象列表,并且想要通过那些年龄小于40岁的用户来过滤列表,我可以写下面的香草JavaScript:

// Vanilla JS
var result = users.filter((d) => d.age < 40);

LoDash / Underscore提供了另一种语法来产生相同的结果:

// Lodash, Underscore
var result = _.filter(users, (d) => d.age < 40); 

这两个产生相同的结果并返回一个数组。

如果有的话,使用后一种语法的构成优点是什么? 为什么最好使用普通的JS语法?


编辑

因为我收到的答案是“一个需要额外的库,一个不需要”和“他们执行不同的代码”,我想澄清一下。

从函数组合的角度来看,在Vanilla JS方法中使用lodash / underscore方法有什么好处吗?


想象一下,你有以下功能compose

function compose(f, g) {
  return function apply(...args) {
    return g(f(...args));
  }
}

您可以使用它将两个功能组合在一起以创建单个功能。

const inc = x => x + 1;
const double = x => x * 2;

const doubleAndInc = compose(double, inc);
doubleAndInc(3) // 7
const incAndDouble = compose(inc, double);
doubleAndInc(3) // 8

这些函数可以构成,因为它们只依赖于它们的论点 。 Lodash的filter功能也是如此。

const filterFirst = compose(_.filter, _.head);
filterFirst([1, 2, 3], x => x % 2 == 0); // 2

Array.prototype.filter不以数组作为参数调用。 相反,它使用其内部的this值 - 这通常是该方法被调用的数组。

compose功能不知道任何关于this 。 它只适用于参数和返回值,这意味着它不能用于编写依赖this函数而不仅仅是参数。

链接地址: http://www.djcxy.com/p/27673.html

上一篇: Compositional advantage of Lodash/Underscore syntax over vanilla JS syntax

下一篇: .each with vanilla for loop