Neurotic Pumpkin Murderer

    is-callable
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/is-callable package

    1.2.7 • Public • Published

    is-callable Version Badge

    github actions coverage dependency status dev dependency status License Downloads

    npm badge

    Is this JS value callable? Works with Functions and GeneratorFunctions, despite ES6 @@toStringTag.

    Supported engines

    Automatically tested in every minor version of node.

    Manually tested in:

    • Safari: v4 - v15 (4, 5, 5.1, 6.0.5, 6.2, 7.1, 8, 9.1.3, 10.1.2, 11.1.2, 12.1, 13.1.2, 14.1.2, 15.3, 15.6.1)
      • Note: Safari 9 has class, but Function.prototype.toString hides that progeny and makes them look like functions, so class constructors will be reported by this package as callable, when they are not in fact callable.
    • Chrome: v15 - v81, v83 - v106(every integer version)
      • Note: This includes Edge v80+ and Opera v15+, which matches Chrome
    • Firefox: v3, v3.6, v4 - v105 (every integer version)
      • Note: v45 - v54 has class, but Function.prototype.toString hides that progeny and makes them look like functions, so class constructors will be reported by this package as callable, when they are not in fact callable.
      • Note: in v42 - v63, Function.prototype.toString throws on HTML element constructors, or a Proxy to a function
      • Note: in v20 - v35, HTML element constructors are not callable, despite having typeof function.
      • Note: in v19, document.all is not callable.
    • IE: v6 - v11(every integer version
    • Opera: v11.1, v11.5, v11.6, v12.1, v12.14, v12.15, v12.16, v15+ v15+ matches Chrome

    Example

    var isCallable = require('is-callable');
    var assert = require('assert');
    
    assert.notOk(isCallable(undefined));
    assert.notOk(isCallable(null));
    assert.notOk(isCallable(false));
    assert.notOk(isCallable(true));
    assert.notOk(isCallable([]));
    assert.notOk(isCallable({}));
    assert.notOk(isCallable(/a/g));
    assert.notOk(isCallable(new RegExp('a', 'g')));
    assert.notOk(isCallable(new Date()));
    assert.notOk(isCallable(42));
    assert.notOk(isCallable(NaN));
    assert.notOk(isCallable(Infinity));
    assert.notOk(isCallable(new Number(42)));
    assert.notOk(isCallable('foo'));
    assert.notOk(isCallable(Object('foo')));
    
    assert.ok(isCallable(function () {}));
    assert.ok(isCallable(function* () {}));
    assert.ok(isCallable(x => x * x));

    Install

    Install with

    npm install is-callable
    

    Tests

    Simply clone the repo, npm install, and run npm test

    Install

    npm i is-callable

    DownloadsWeekly Downloads

    27,678,655

    Version

    1.2.7

    License

    MIT

    Unpacked Size

    28.9 kB

    Total Files

    10

    Last publish

    Collaborators

    • ljharb