1.面向对象编程:
把现实对象抽象成具体的类或对象,通过封装,继承,多态实现对现实事物的描述。
2.函数式编程:
把现实事物之间的关系抽象成函数映射关系,如 f = f(x);
3.纯函数:
相同 的 输入始终有相同的输出
4.函数一等公民
a.函数作为变量存储
b.函数作为参数传递
c.函数作为返回值返回
其中,b,c属于高阶函数
5.高阶函数
a.函数作为参数传递 【实践中应用】
```
var map = (array, fn) => {
let results = [];
for (let item of array) {
results.push(fn(item));
}
return results;
}
var array = [1, 2, 4, 6, 5, 7];
var res = map(array, item => item * 2);
console.log(res); //[ 2, 4, 8, 12, 10, 14 ]
```
b.函数作为返回值返回 【常见有闭包】
//once函数
function once () {
let done = false;
let msg = 'this is a closure';
let count = 0;
return function() {
if (!done) {
done = true;
// logic
console.log(msg);
console.log(++count);
}
}
}
let closureFn = once();
closureFn();
//this is a closure
//1
closureFn();
//无打印