高阶函数
高阶函数
高阶函数是指至少满足下列条件之一的函数
- 函数可以作为参数被传递
把函数当作参数传递,这代表我们可以抽离出一部分容易变化的业务逻辑,把这部分业务逻 辑放在函数参数中,这样一来可以分离业务代码中变化与不变的部分。其中一个重要应用场景就 是常见的回调函数
var appendDiv = function (cb) { for (var i = 0; i < 100; i++) { var oDiv = document.createElement('div') oDiv.innerHTML = i; document.body.appendChild(oDiv) if (typeof cb === 'function') { cb(oDiv) } } } appendDiv(function (oDiv) { oDiv.style.display = 'none' })
- 函数可以作为返回值输出
相比把函数当作参数传递,函数当作返回值输出的应用场景也许更多,也更能体现函数式编 程的巧妙。让函数继续返回一个可执行的函数,意味着运算过程是可延续的。
// 判断数据类型 var Type = {} for (var i = 0, type; type = ['String', 'Array', 'Number'][i++];) { (function (type) { Type['is' + type] = function (obj) { return Object.prototype.toString.call(obj) === '[object ' + type + ']' } })(type) console.log(1111) } alert(Type.isString('11111'))