foop
Version:
interfaces that describe their intentions.
57 lines (56 loc) • 4.78 kB
JavaScript
/**
* Checks if `value` is classified as a `Function` object.
* @memberOf is
* @since 3.0.0
*
* @param {*} x The value to check.
* @return {boolean} x isFunction
*
* @category Lang
* @func isFunction
*
* @NOTE || x instanceof Function
*
* @polyfill safari=9
* The use of `Object#toString` avoids issues with the `typeof` operator
* in Safari 9 which returns 'object' for typed arrays and other constructors.
* there is no polyfill for this
* https://github.com/krambuhl/custom-event-polyfill/issues/2
* browser usage is < 0.3%, very edge case
*
* {@link https://github.com/gcanti/tcomb/blob/master/lib/isFunction.js tcomb-isfunction}
* {@link https://nodejs.org/api/util.html#util_util_isfunction_object node-util-is-function}
* {@link https://github.com/ramda/ramda/blob/master/src/internal/_isFunction.js ramda-is-function}
* {@link https://github.com/lodash/lodash/blob/master/functions.js#L22 lodash-is-function}
* {@link https://github.com/infernojs/inferno/blob/master/packages/inferno-shared/src/index.ts#L38 inferno-is-function}
* {@link https://github.com/js-data/js-data/blob/v2/src/utils.js#L77 js-data-is-function}
* {@link http://underscorejs.org/docs/underscore.html#section-141 underscore-is-function}
* @see {@link tcomb-is-function}
* @see {@link underscore-is-function}
* @see {@link js-data-is-function}
* @see {@link inferno-is-function}
* @see {@link lodash-is-function}
* @see {@link ramda-is-function}
* @see {@link node-util-is-function}
*
* @example
*
* isFunction(function() {})
* //=> true
* isFunction(() => {})
* //=> true
* isFunction(new Function())
* //=> true
*
* isFunction(1)
* //=> false
* isFunction('')
* //=> false
* isFunction(/abc/)
* //=> false
*
*/
module.exports = function isFunction(x) {
return typeof x === 'function'
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VzIjpbImZ1bmN0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICogQG1lbWJlck9mIGlzXG4gKiBAc2luY2UgMy4wLjBcbiAqXG4gKiBAcGFyYW0gIHsqfSB4IFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IHggaXNGdW5jdGlvblxuICpcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAZnVuYyBpc0Z1bmN0aW9uXG4gKlxuICogQE5PVEUgfHwgeCBpbnN0YW5jZW9mIEZ1bmN0aW9uXG4gKlxuICogQHBvbHlmaWxsIHNhZmFyaT05XG4gKiAgIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICogICBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAqICAgdGhlcmUgaXMgbm8gcG9seWZpbGwgZm9yIHRoaXNcbiAqICAgaHR0cHM6Ly9naXRodWIuY29tL2tyYW1idWhsL2N1c3RvbS1ldmVudC1wb2x5ZmlsbC9pc3N1ZXMvMlxuICogICBicm93c2VyIHVzYWdlIGlzIDwgMC4zJSwgdmVyeSBlZGdlIGNhc2VcbiAqXG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2djYW50aS90Y29tYi9ibG9iL21hc3Rlci9saWIvaXNGdW5jdGlvbi5qcyB0Y29tYi1pc2Z1bmN0aW9ufVxuICoge0BsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvdXRpbC5odG1sI3V0aWxfdXRpbF9pc2Z1bmN0aW9uX29iamVjdCBub2RlLXV0aWwtaXMtZnVuY3Rpb259XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3JhbWRhL3JhbWRhL2Jsb2IvbWFzdGVyL3NyYy9pbnRlcm5hbC9faXNGdW5jdGlvbi5qcyByYW1kYS1pcy1mdW5jdGlvbn1cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iL21hc3Rlci9mdW5jdGlvbnMuanMjTDIyIGxvZGFzaC1pcy1mdW5jdGlvbn1cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vaW5mZXJub2pzL2luZmVybm8vYmxvYi9tYXN0ZXIvcGFja2FnZXMvaW5mZXJuby1zaGFyZWQvc3JjL2luZGV4LnRzI0wzOCBpbmZlcm5vLWlzLWZ1bmN0aW9ufVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9qcy1kYXRhL2pzLWRhdGEvYmxvYi92Mi9zcmMvdXRpbHMuanMjTDc3IGpzLWRhdGEtaXMtZnVuY3Rpb259XG4gKiB7QGxpbmsgaHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvZG9jcy91bmRlcnNjb3JlLmh0bWwjc2VjdGlvbi0xNDEgdW5kZXJzY29yZS1pcy1mdW5jdGlvbn1cbiAqIEBzZWUge0BsaW5rIHRjb21iLWlzLWZ1bmN0aW9ufVxuICogQHNlZSB7QGxpbmsgdW5kZXJzY29yZS1pcy1mdW5jdGlvbn1cbiAqIEBzZWUge0BsaW5rIGpzLWRhdGEtaXMtZnVuY3Rpb259XG4gKiBAc2VlIHtAbGluayBpbmZlcm5vLWlzLWZ1bmN0aW9ufVxuICogQHNlZSB7QGxpbmsgbG9kYXNoLWlzLWZ1bmN0aW9ufVxuICogQHNlZSB7QGxpbmsgcmFtZGEtaXMtZnVuY3Rpb259XG4gKiBAc2VlIHtAbGluayBub2RlLXV0aWwtaXMtZnVuY3Rpb259XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgaXNGdW5jdGlvbihmdW5jdGlvbigpIHt9KVxuICogIC8vPT4gdHJ1ZVxuICogIGlzRnVuY3Rpb24oKCkgPT4ge30pXG4gKiAgLy89PiB0cnVlXG4gKiAgaXNGdW5jdGlvbihuZXcgRnVuY3Rpb24oKSlcbiAqICAvLz0+IHRydWVcbiAqXG4gKiAgaXNGdW5jdGlvbigxKVxuICogIC8vPT4gZmFsc2VcbiAqICBpc0Z1bmN0aW9uKCcnKVxuICogIC8vPT4gZmFsc2VcbiAqICBpc0Z1bmN0aW9uKC9hYmMvKVxuICogIC8vPT4gZmFsc2VcbiAqXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNGdW5jdGlvbih4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0RBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxVQUFVLENBQUMsQ0FBQyxFQUFFO0VBQ3RDLE9BQU8sT0FBTyxDQUFDLEtBQUssVUFBVTtDQUMvQjsifQ==