javascript - 在 JavaScript 中使用身份函数

标签 javascript function functional-programming identity use-case

我在我所有的 JavaScript 程序中都使用了 identity 函数:

function identity(value) {
    return value;
}

原因是我经常需要区分基元类型(undefinednullbooleannumberstring) 和 typeof 运算符返回的对象类型(objectfunction)。我觉得在这个用例中使用 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/

相关文章:

javascript - currentTime 属性在 Chrome 中不起作用

python - 迭代在函数中如何工作

function - 如何将函数分配给 dart 中的类字段?

javascript - 删除数组中所有重复项和未定义项。 Ramda.js

javascript - 使用 jQuery 无法动态添加多个元素

javascript - 同时打开两个jquery日期选择器

javascript - 重置功能,所以当时只有一个打开

recursion - 如何在没有尾递归的情况下在匿名 fn 中进行递归

javascript - 使用 javascript 更改 React 应用程序的输入文本

swift - 这个对象究竟存储在哪里? ( swift )