is-not-defined

checks if foo is not defined, i.e. undefined, null, an empty string, array, object or NaN

Usage no npm install needed!

<script type="module">
  import isNotDefined from 'https://cdn.skypack.dev/is-not-defined';
</script>

README

is-not-defined

checks if foo is not defined, i.e. undefined, null, an empty string, array, object or NaN

This is a fork of fibo/not-defined to add browser compatibility

Installation | Usage | Annotated source | License

NPM version KLP

Installation

npm install is-not-defined

Usage

This snippet of code

const isNotDefined = require("is-not-defined");

if (isNotDefined(foo)) {
  // do something, usually throw a TypeError
}

is equivalent to the following pseudocode

if (foo is not defined, i.e. is null, undefined, NaN, an empty string, array or object) {
  // do something, usually throw a TypeError
}

You can also use a shorter but still semantic form like

const no = require("is-not-defined");

if (no(foo)) {
  // do something, usually throw a TypeError
}

Follows a list of tested examples

no(); // true
no(undefined); // true
no(null); // true
no(""); // true
no([]); // true
no({}); // true
no(NaN); // true

no(0); // false
no(true); // false
no(false); // false
no("string"); // false
no(["foo"]); // false
no({ foo: true }); // false
no(42); // false
no(Infinity); // false
no(function () {
  return 1;
}); // false

Pros

  • Type less.
  • Better readability (even your boss will understand your code ^:).
  • Can save bytes in your builds.
  • Easier to autocomplete in editors (for instance easier than typeof foo === 'undefined').

Annotated source

This is my first npm package written using [KISS Literate Programming][klp].

function isNotDefined(x){return x==null||(typeof x == 'number'&&isNaN(x))||(x.length<1&&typeof x!='function')||(typeof x=='object'&&x.constructor.name=='Object'&&Object.keys(x).length<1)}try{module.exports=isNotDefined}catch(e){}

Snippet length<1 is used instead of equivalent length==0 to save two characters, considering it is used twice.

License

MIT