匿名函數(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
)
- 純函數是一種其返回值僅由其參數決定,沒有任何副作用的函數张吉。
這意味著如果你在整個應用程序中的不同的一百個地放調用一個純函數相同的參數一百次齿梁,該函數始終返回相同的值。純函數不會更改或讀取外部狀態(tài)肮蛹。
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]