声明式代码
最后更新于:2022-04-02 04:17:42
[TOC]
## 声明式代码
- 与命令式不同,声明式意味着我们要写表达式,而不是一步一步的指示
- 以 SQL 为例,我们只是声明了我们需要回去的数据,具体实现,交给数据库自己去处理
- 概述:没有具体细节的编写方式就是声明时
通过下面一个实例找找什么是声明式的感觉
```
// 命令式
var makes = [];
for (i = 0; i < cars.length; i++) {
makes.push(cars[i].make);
}
// 声明式
var makes = cars.map(function(car){ return car.make; });
```
- 命令式表达的是怎么做,声明式表达的是做什么
- 除了更加清晰和简洁之外,`map`函数还可以进一步优化,这么一来我们宝贵的应用代码就无须改动了
如果有人觉得命令式循环会快很多,可以学学JIT的代码优化相关知识,[非常棒的视频](https://www.youtube.com/watch?v=65-RbBwZQdU)
在看一个示例
```
// 命令式
var authenticate = function(form) {
var user = toUser(form);
return logIn(user);
};
// 声明式
var authenticate = compose(logIn, toUser);
```
- 硬编码了那种一步接一步的执行方式。而 compose 表达式只是简单地指出了这样一个事实:用户验证是 toUser 和 logIn 两个行为的组合
- 声明式为潜在的代码更新提供了支持,使得我们的应用代码成为了一种高级规范(high level specification)
';