# flip
# Description
创建一个函数,调用 func 时候接收翻转的参数。
# Params
func
# Return
Function
# Code
function flip(func) {
if (typeof func !== 'function') {
throw new TypeError('Expected a function')
}
return function(...args) {
return func.apply(this, args.reverse())
}
}
# Analyze
判断了 func
的合法性,如果不是 function
类型,则抛出类型错误
在调用时,使用 reverse
进行参数的翻转
# Remark
- Function.prototype.apply() MDN (opens new window) 方法调用一个具有给定 this 值的函数,以及以一个数组(或类数组对象)的形式提供的参数。
- Array.prototype.reverse() MDM (opens new window) 方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。
# Example
const func = (a,b,c,d) => a - b - c - d
const temp = flip(func)
console.log(func(20, 10, 5 ,0)) // 5
console.log(temp(20, 10, 5 ,0)) // -35
← flattenDepth floor →