JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 5
  • Score
    100M100P100Q38448F
  • License MIT

Checks whether given variable is callable. Works fine function and generators in spite of ES6 @@toStringTag

Package Exports

  • is-fun

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (is-fun) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

is-fun

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
# or via yarn
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(() => {}); // true
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

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")