UNPKG

564 BJavaScriptView Raw
1'use strict';
2
3/**
4 * Syntactic sugar for invoking a function and expanding an array for arguments.
5 *
6 * Common use case would be to use `Function.prototype.apply`.
7 *
8 * ```js
9 * function f(x, y, z) {}
10 * var args = [1, 2, 3];
11 * f.apply(null, args);
12 * ```
13 *
14 * With `spread` this example can be re-written.
15 *
16 * ```js
17 * spread(function(x, y, z) {})([1, 2, 3]);
18 * ```
19 *
20 * @param {Function} callback
21 * @returns {Function}
22 */
23module.exports = function spread(callback) {
24 return function wrap(arr) {
25 return callback.apply(null, arr);
26 };
27};