我在我所有的 JavaScript 程序中都使用了 identity 函数:
function identity(value) {
return value;
}
原因是我经常需要区分基元类型(undefined
、null
、boolean
、number
和 string
) 和 typeof
运算符返回的对象类型(object
和 function
)。我觉得在这个用例中使用 indentity 函数非常简洁:
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";
}
然而,在阅读我的代码时,我的一个 friend 提示说我的 hack 具有误导性,并且比上述替代方案的计算成本更高。
我不想从我的任何程序中删除此功能,因为我认为这是一个优雅的 hack。再说一次,我不会只为自己编写程序。 JavaScript 中的身份函数还有其他用例吗?
最佳答案
恕我直言:
new identity(value) == value
绝对没有任何意义,如果没有额外的评论,我将不得不考虑一段时间才能弄清楚意图是什么。另一方面:
isObject(value)
从一开始就很明显,无论它是如何实现的。为什么不能在名为 isObject()
的函数 中使用您的 hack?
顺便说一句,更适合 http://codereview.stackexchange.com .
关于javascript - 在 JavaScript 中使用身份函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11485508/