Aad*_*hah 4 javascript identity functional-programming function use-case
我在所有JavaScript程序中使用identity函数:
function identity(value) {
return value;
}
Run Code Online (Sandbox Code Playgroud)
其原因是,我经常需要原语类型区分(undefined,null,boolean,number和string()和对象类型object和function)由返回的typeof运营商.我觉得使用这个用例的indentity函数非常多汁:
if (new identity(value) == value); // value is of an object type
if (new identity(value) != value); // value is of a primitive type
Run Code Online (Sandbox Code Playgroud)
身份函数比以下代码小得多且简单:
function isObject(value) {
var type = typeof value;
return type == "object" || type == "function";
}
Run Code Online (Sandbox Code Playgroud)
然而,在阅读我的代码时,我的一位朋友抱怨我的黑客比上述替代方案更具误导性且计算成本更高.
我不想从我的任何程序中删除此功能,因为我认为这是一个优雅的黑客.然后我再也不为自己编写程序.JavaScript中的身份功能还有其他用例吗?
Tom*_*icz 16
恕我直言:
new identity(value) == value
Run Code Online (Sandbox Code Playgroud)
绝对没有任何意义,没有额外的评论我将不得不考虑一段时间来弄清楚意图是什么.另一方面:
isObject(value)
Run Code Online (Sandbox Code Playgroud)
无论如何实施,从一开始就很明显.为什么你不能在名为的函数中使用你的hack isObject()?
BTW更适合http://codereview.stackexchange.com.