elv
Elvis operator functionality for JavaScript.
With the absence of an Elvis (existential) operator in JavaScript, I often find myself writing the same checks to see if something is undefined
over and over and over again. The ||
operator in JavaScript is generally inadequate for this purpose, because it fails to account for Booleans. So, I decided to create a small module to clean up the redundant code.
API
elv(val)
Determines whether or not the argument val
is defined. Returns false
if val
is undefined
or null
, or will otherwise returns true
.
Parameters
val
: (required) the value on which to perform an existential check.
Example:
const elv = ; const foo = foo: 'bar' ;console; // true const bar = undefined;console; // false const baz = false;console; // true const qux = null;console; // false
elv.behavior.enableFalse
Gets or sets whether or not existential checks should check if value is not false
. Defaults to false
(not enabled).
Example:
const elv = ; console; // true elvbehaviorenableFalse = true; console; // false
elv.behavior.enableNaN
Gets or sets whether or not existential checks should check if value is not Number.NaN
. Defaults to false
(not enabled).
Example:
const elv = ; console; // true elvbehaviorenableNaN = true; console; // false
elv.behavior.enableNull
Gets or sets whether or not existential checks should check if value is not null
. Defaults to true
(enabled).
Example:
const elv = ; console; // false elvbehaviorenableNull = false; console; // true
elv.behavior.enableUndefined
Gets or sets whether or not existential checks should check if value is not undefined
. Defaults to true
(enabled).
Example:
const elv = ; console; // false elvbehaviorenableUndefined = false; console; // true
elv.coalesce(...val)
Accepts a series of parameters, and returns the first argument that is defined.
Parameters
...val
: (required) the values to coalesce.
Example:
const elv = ;const coalesce = elvcoalesce; const foo = undefined;const bar = null;const baz = 'hello world';const qux = true; const result = ;console; // hello world
Deferred Function Execution
If the final argument passed to elv.coalesce()
is reached, and it is a function
, then it will evaluate that function and return its result. The idea is to ensure that potentially expensive functions to execute are not run unless absolutely necessary.
Example
const elv = ;const coalesce = elvcoalesce; const getFoo = { // do something expensive to compute theValueOfFoo return theValueOfFoo;}; { // the getFoo function will only be executed if foo is not truthy this_foo = ; }
elv.ncoalesce(...val)
Accepts a series of parameters, and returns the first argument that is defined. Works just like elv.coalesce(), but it does not lazily execute functions.
Parameters
...val
: (required) the values to coalesce.
Example:
const elv = ;const coalesce = elvcoalesce; const foo = undefined;const bar = null;const baz = 'hello world';const qux = true; const result = ;console; // hello world
elv.populated(val)
In addition to performing an existential check, determines if a given string, array or object is not empty. An empty object is one that has no properties.
Parameters
val
: (required) the value on which to perform an existential and populated check.
Examples:
const elv = ; console; //trueconsole; //trueconsole; //trueconsole; // falseconsole; // falseconsole; // falseconsole; // false
elv.tryGet(val, index [, default])
Attempts to get an entry from an array at the given index. If the given index is out of the array's bounds, then a given default value is returned.
Parameters
-
val
: (required) the array from which an entry is being fetched. -
index
: (required) the index being referenced in the array. -
default
: (optional) the default value if index is not found.
Examples
const elv = ; const val = 'foo' 'bar' 'baz' 'qux'; console; // undefinedconsole; // 42console; // baz