请解释underscore.js的_.identity(价值)的用法(Please explain

2019-07-17 23:19发布

请解释的使用_.identity(value) underscore.js的。 无法从文档(了解http://underscorejs.org/#identity )。

你能提供其使用的一些例子吗?

Answer 1:

它本质上是一个没有操作功能。 它返回无论传递到它的价值。

它被用作库本身内的“缺省迭代器”的一部分,是指在其它功能,这可以具有可选的“迭代”参数(其可能用作函数应用到某种类型的数组的每个元素) ,如果没有迭代参数传递,该库将使用此“无操作”迭代代替和数组的元素将保持不变。



Answer 2:

甲JavaScript代码图案涉及同一性是基于感实性,例如滤波值

var a = [null, null, [1,2,3], null, [10, 12], null];

a.filter(_.identity) 

产率[阵列[3],阵列[2]]。

运用

_.compact(a)

更清晰,但有可能无法使用lodash或下划线所有,如

function identity(x) { 
   return x; 
}

a.filter(identity)

无论是好的代码模式是有问题的几个原因,但它在野外使用。

这根本不是一个空操作。 甲NOOP是在例如装配势在必行构建体,而在功能编程,它就像在它返回一个值等功能。 如果身份是一个空操作,那么所有纯函数也可以考虑空操作,并且它不会是一个明智的做法。



Answer 3:

一个具体的例子:

Underscore.js定义_.each和这个样子。

_.each = function(obj, iterator, context) {
  ...
}

这个迭代器显示EL值。 你也许已经使用这个成语。

_.each([1, 2, 3], function(el){
  console.log(el);
});

该迭代器返回EL值无改变。

_.each([1, 2, 3], function(el){
  return el;
});

如果没有改变返回值的函数经常发生。 所以Underscore.js要定义的功能。 Underscore.js名称的功能_.identity。

_.identity = function(value) {
  return value;
};

如果Underscore.js想使用默认的迭代器,所有Underscore.js需要的是呼叫_.identity。

_.each([1, 2, 3], _.identity);


文章来源: Please explain usage of _.identity(value) of underscore.js