Checks whether given variable is callable. Works fine function and generators in spite of ES6 @@toStringTag
npm install is-funYes! One more package detecting that given variable is function.
Made as drop-in replacement for is-callable package, but lighter and faster
``bash`
npm install is-funor via yarn
yarn add is-fun
Use it wherever and however you want - node.js or webpack, CJS or ESM modules!
`javascript
const isFun = require("is-fun");
isFun(() => {}); // true
`
`typescript
import isFun from "is-fun";
isFun(undefined); // false
isFun(null); // false
isFun(false); // false
isFun(true); // false
isFun([]); // false
isFun({}); // false
isFun(/a/g); // false
isFun(new RegExp("a", "g")); // false
isFun(new Date()); // false
isFun(42); // false
isFun(NaN); // false
isFun(Infinity); // false
isFun(new Number(42)); // false
isFun("foo"); // false
isFun(Object("foo")); // false
isFun(function() {}); // true
isFun(function*() {}); // true
isFun(x => x * x); // true
`
benchmarks ran on 3.4GHz Core i7 CPU width 16GB DDR4 RAM
`bash``
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")