6 . 示例应用
<h4>声明示函数</h4>
<p>我们要开始转变观念了,从本章开始,我们将不再指示计算机如何工作,而是指出我们明确希望得到的结果。我敢保证,这种做法与那种需要时刻关心所有细节的命令式编程相比,会让你轻松许多。
与命令式不同,声明式意味着我们要写表达式,而不是一步一步的指示。</p>
<p>以 SQL 为例,它就没有“先做这个,再做那个”的命令,有的只是一个指明我们想要从数据库取什么数据的表达式。至于如何取数据则是由它自己决定的。以后数据库升级也好,SQL 引擎优化也好,根本不需要更改查询语句。这是因为,有多种方式解析一个表达式并得到相同的结果。</p>
<pre><code class="language-javascript">// 命令式
var makes = [];
for (i = 0; i < cars.length; i++) {
makes.push(cars[i].make);
}
// 声明式
var makes = cars.map(function(car){ return car.make; });
map它指明的是做什么,不是怎么做。因此,它是正儿八经的声明式代码</code></pre>
<p>var law = compose(map(f), map(g)) == map(compose(f, g));</p>
<pre><code class="language-javascript">var compose = function(f,g) {
return function(x) {
return f(g(x));
};
};
//验证(是judy就正常登录) - 登录
function toUser(x){
if(x === "judy"){
return true ;
}else{
return false ;
}
}
function login(x){
if(x){
return '正常登录'
}else{
throw new Error('用户名或密码错误')
}
}
var isLogin = compose(login,toUser)
// console.log(isLogin('judy'))
console.log(isLogin('judy1'))</code></pre>