javascriptfunctionfunctional-programmingidentityuse-case

Use of the identity function in JavaScript


I use the identity function in all my JavaScript programs:

function identity(value) {
    return value;
}

The reason is that I often need differentiate between primitives types (undefined, null, boolean, number and string) and object types (object and function) as returned by the typeof operator. I feel using the indentity function for this use case very succuint:

if (new identity(value) == value); // value is of an object type
if (new identity(value) != value); // value is of a primitive type

The identity function is much smaller and simpler than the following code:

function isObject(value) {
    var type = typeof value;
    return type == "object" || type == "function";
}

However on reading my code a friend of mine complained that my hack is misleading and more computationally expensive than the above alternative.

I don't want to remove this function from any of my programs as I believe it's an elegant hack. Then again I don't write programs solely for myself. Is there any other use case for the identity function in JavaScript?


Solution

  • I updated my "speedtest" to test if the right results are returned … they aren't:

    If you compare with new identity(x) == x, then null is deemed an object. === works, though.

    Such pitfalls speak in favor of the isObject(...) solution.

    If you compare === 'object'/'function' in the isObject code, then it will be double as fast as your original implementation, and almost a third faster than new identity(x) === x.