2. 一等公民 —— 函数
<h4>一等公民 —— 函数</h4>
<pre><code class="language-javascript">const hi = name => `Hi ${name}`;
const greeting = name => hi(name);</code></pre>
<p>这里 greeting 指向的那个把 hi 包了一层的包裹函数完全是多余的。为什么?因为 JavaScript 的函数是可调用的,当 hi 后面紧跟 () 的时候就会运行并返回一个值;如果没有 (),hi 就简单地返回存到这个变量里的函数。我们来确认一下</p>
<pre><code class="language-javascript">hi; // name => `Hi ${name}`
hi("jonas"); // "Hi jonas"</code></pre>
<p>greeting 只不过是转了个身然后以相同的参数调用了 hi 函数而已,因此我们可以这么写:</p>
<pre><code class="language-javascript">const greeting = hi;
greeting("times"); // "Hi times"</code></pre>
<p>用一个函数把另一个函数包起来,目的仅仅是延迟执行,真的是非常糟糕的编程习惯。(稍后我将告诉你原因,跟可维护性密切相关。)</p>