请解释的使用_.identity(value)
underscore.js的。 无法从文档(了解http://underscorejs.org/#identity )。
你能提供其使用的一些例子吗?
请解释的使用_.identity(value)
underscore.js的。 无法从文档(了解http://underscorejs.org/#identity )。
你能提供其使用的一些例子吗?
它本质上是一个没有操作功能。 它返回无论传递到它的价值。
它被用作库本身内的“缺省迭代器”的一部分,是指在其它功能,这可以具有可选的“迭代”参数(其可能用作函数应用到某种类型的数组的每个元素) ,如果没有迭代参数传递,该库将使用此“无操作”迭代代替和数组的元素将保持不变。
甲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是在例如装配势在必行构建体,而在功能编程,它就像在它返回一个值等功能。 如果身份是一个空操作,那么所有纯函数也可以考虑空操作,并且它不会是一个明智的做法。
一个具体的例子:
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);