Yes! One more package detecting that given variable is function.
Made as drop-in replacement for is-callable package, but lighter and faster
Install it via npm or yarn
npm install is-fun
yarn add is-fun
Use it wherever and however you want - node.js or webpack, CJS or ESM modules!
const isFun = require("is-fun");
isFun(() => {});
import isFun from "is-fun";
isFun(undefined);
isFun(null);
isFun(false);
isFun(true);
isFun([]);
isFun({});
isFun(/a/g);
isFun(new RegExp("a", "g"));
isFun(new Date());
isFun(42);
isFun(NaN);
isFun(Infinity);
isFun(new Number(42));
isFun("foo");
isFun(Object("foo"));
isFun(function() {});
isFun(function*() {});
isFun(x => x * x);
Performance (recent benchmarks results)
benchmarks ran on 3.4GHz Core i7 CPU width 16GB DDR4 RAM
npm run build && npm i -C benchmark && npm -C benchmark start
# Regular function
is-callable × 3,679,405 ops/sec; (result: "true")
is-fun × 6,736,726 ops/sec; (result: "true")
# Fake function
is-callable × 45,630 ops/sec; (result: "false")
is-fun × 112,172 ops/sec; (result: "false")
# Typed array constructor
is-callable × 1,692,920 ops/sec; (result: "true")
is-fun × 2,716,742 ops/sec; (result: "true")
# Class constructor
is-callable × 7,058,944 ops/sec; (result: "false")
is-fun × 7,109,810 ops/sec; (result: "false")
# Arrow function
is-callable × 95,493,127 ops/sec; (result: "true")
is-fun × 89,843,495 ops/sec; (result: "true")
# Null
is-callable × 124,068,441 ops/sec; (result: "false")
is-fun × 126,135,930 ops/sec; (result: "false")
# Number
is-callable × 863,066,938 ops/sec; (result: "false")
is-fun × 863,418,881 ops/sec; (result: "false")