我在所有的 JavaScript 程序中都使用恒等函数(identity function):
function identity(value) {
return value;
}
原因在于我经常需要区分基础类型(undefined
、null
、boolean
、number
和string
)和由 typeof
运算符返回的对象类型(object
和 function
)。我认为,在这种情况下使用身份函数非常简明:
if (new identity(value) == value); // value is of an object type
if (new identity(value) != value); // value is of a primitive type
身份函数比下面的代码要小得多,也要简单得多:
function isObject(value) {
var type = typeof value;
return type == "object" || type == "function";
}
然而,我的一个朋友读了我的代码后抱怨说我的方法是误导性的,并且比上面的替代方法更加计算量大。
我不想从任何一个程序中删除这个函数,因为我认为这是一种优雅的hack。但是,我并不是只为自己写程序。在JavaScript中,还有其他用例可以使用identity函数吗?
value === Object(value)
呢?或者,为了让代码更易读,定义一个isObject
函数来使用它呢? - Keenvar func = optionalProcessFunc || identityFunc;
。现在在代码后面,您无需了解如何配置此部分以运行。更普遍地说,如果您想将函数视为单子,使用恒等函数作为mzero和组合作为mconcat会很方便。 - Keen