apply-or

Invoke .apply if value is a function, otherwise, return default value.

Usage no npm install needed!

<script type="module">
  import applyOr from 'https://cdn.skypack.dev/apply-or';
</script>

README

apply-or

Invoke .apply if value is a function, otherwise, return default value.

Build Status Code Climate js-standard-style

npm install apply-or --save
npm stats

npm NPM downloads Dependency Status

Why?

Function.prototype.apply is normally sufficient; however, there are situations where it is useful to treat a value as a Function (invoke it) only if it is indeed a Function; otherwise, return it as-is. Calling .apply on a value that is not a function would cause an error.

Examples

delay.js
var apply = require('apply-or')

function delay (cb) {
  setTimeout(apply.bind(null, cb))
}

delay('Hello') // does nothing (because argument is not a function)
delay(console.log.bind(console, 'Hello, World')) // prints 'Hello, World' to stdout
divmax.js
var apply = require('apply-or')

function divmax (divisor) {
  return Math.max.apply(null, this.val) / divisor
}

var data = {
  val: [9, 7, 15, 12]
}

apply(divmax, 5, data)
//=> divmax.apply({ val: [9, 7, 15, 12] }, [5])
//=> 15 / 5
//=> 3

API

apply(func, args, self)

arguments
  • func: (Function) Function to be invoked.
  • args: (Array|*) Arguments to apply to function.
  • self: (Object) this value.
returns
  • (*) Result of applying function or default value.

Licenses

GitHub license