匿名函数(Lambdas
) 箭头函数 =>
const lamb = (a) => parseInt(a) * 10
头等函数(first-class Function
)
- 可被赋值给变量、数列元素和对象属性
- 函数可作为参数使用
- 可以当做返回值
const handler = () => console.log ('click once The Fn');
document.addEventListener ('click', handler);
高阶函数(higher-order functions
)
- 可以将其他函数作为参数,或将一个函数作为返回
const handler = () => console.log ('click once The Fn');
document.addEventListener ('click', handler);
一元函数(unary functions
)
- 只接受一个参数的函数
const unaryFn = message => console.log (message);
柯里化(currying
)
- Currying(柯里化)是一个带有多个参数的函数并将其转换为函数序列的过程,每个函数只有一个参数。
一个有n个参数的函数,可以使用柯里化将它变成一个一元函数。
const binaryFunction = (a, b) => a + b;
const curryUnaryFunction = a => b => a + b;
curryUnaryFunction (1); // returns a function: b => 1 + b
curryUnaryFunction (1) (2); // returns the number 3
纯函数(pure functions
)
- 纯函数是一种其返回值仅由其参数决定,没有任何副作用的函数。
这意味着如果你在整个应用程序中的不同的一百个地放调用一个纯函数相同的参数一百次,该函数始终返回相同的值。纯函数不会更改或读取外部状态。
let myArray = [];
const impureAddNumber = number => myArray.push (number);
const pureAddNumber = number => anArray =>
anArray.concat ([number]);
console.log (impureAddNumber (2)); // returns 1
console.log (myArray); // returns [2]
console.log (pureAddNumber (3) (myArray)); // returns [2, 3]
console.log (myArray); // returns [2]
myArray = pureAddNumber (3) (myArray);
console.log (myArray); // returns [2, 3]
网友评论