node package manager
Stop wasting time. Easily manage code sharing in your team. Create a free org »



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

Installation | Usage | Annotated source | License

NPM version Dependency Status KLP


npm install not-defined


This snippet of code

const notDefined = require('not-defined')
if (notDefined(foo)) {
  // do something, usually throw a TypeError

is equivalent to the following pseudocode

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

You can also use a shorter but still semantic form like

const no = require('not-defined')
if (no(foo)) {
  // do something, usually throw a TypeError

Follows a list of tested examples

no() // true
no(null) // true
no([]) // true
no({}) // true
no(false) // false
no(0) // false
no('string') // false
no({ foo: true }) // false
no(['foo']) // false


  • 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. It is plain ES5 function that is 107 characters long.

module.exports=function(x){return x == null||(x.length<1 && typeof x != 'function')||(typeof x == 'object'&& Object.keys(x).length<1)}

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