edit set-map

This commit is contained in:
ruanyf
2016-01-08 19:17:16 +08:00
parent 73be57cbeb
commit 91d44bdb6f
3 changed files with 23 additions and 8 deletions
+8 -4
View File
@@ -1,6 +1,6 @@
# 函数式编程
从一诞生,JavaScript语言就具有函数式编程的烙印。它将函数作为一种独立的数据类型,与其他数据类型处于完全平等的地位。在JavaScript语言中,你可以采用面向对象编程,也可以采用函数式编程。有人甚至说,JavaScript是有史以来第一种被大规模采用的函数式编程语言。
JavaScript语言从一诞生,就具有函数式编程的烙印。它将函数作为一种独立的数据类型,与其他数据类型处于完全平等的地位。在JavaScript语言中,你可以采用面向对象编程,也可以采用函数式编程。有人甚至说,JavaScript是有史以来第一种被大规模采用的函数式编程语言。
ES6的种种新增功能,使得函数式编程变得更方便、更强大。本章介绍ES6如何进行函数式编程。
@@ -37,7 +37,7 @@ f.comp = (...fs) => {
## 参数倒置
参数倒置(flip)指的是改变函数参数的顺序。
参数倒置(flip)指的是改变函数前两个参数的顺序。
```javascript
var divide = (a, b) => a / b;
@@ -45,9 +45,13 @@ var flip = f.flip(divide);
flip(10, 5) // 0.5
flip(1, 10) // 10
var three = (a, b, c) => [a, b, c];
var flip = f.flip(three);
flip(1, 2, 3); // => [2, 1, 3]
```
上面代码中,如果按照正常的参数顺序,10除以5等于2。但是,参数倒置以后得到的新函数,结果就是5除以10,结果得到0.5。
上面代码中,如果按照正常的参数顺序,10除以5等于2。但是,参数倒置以后得到的新函数,结果就是5除以10,结果得到0.5。如果原函数有3个参数,则只颠倒前两个参数的位置。
参数倒置的代码非常简单。
@@ -55,7 +59,7 @@ flip(1, 10) // 10
let f = {};
f.flip =
fn =>
(...args) => fn.apply(null, args.reverse());
(a, b, ...args) => fn(b, a, ...args.reverse());
```
## 执行边界