此ES6箭头功能代码块有什么作用?

时间:2019-01-15 14:25:01

标签: javascript ecmascript-6

(a => `Hello ES${a}`)(2015);

以上代码返回Hello ES2015,但我无法理解带有箭头功能的模板文字在这里如何工作。

4 个答案:

答案 0 :(得分:1)

这是IIFE(立即调用函数表达式)。

它定义了一个匿名函数,该匿名函数接受参数a并返回将Hello ES与值a连接起来的字符串。

a => `Hello ES${a}`

/* is equivalent to:

   function(a) {
     return 'Hello ES' + a
   }
*/

然后,它将值2015作为参数运行此函数。

答案 1 :(得分:0)

这称为 IIFE (立即调用函数表达式),在需要时运行该函数很有用。

实际上是通过使用箭头函数(拉姆达函数)(a =>您好,ES $ {a} )(2015); a是一个参数,默认情况下所有lambda函数(不带花括号)将返回下一条语句。

当您不使用花括号定义块时,这与if语句的行为相同。例如

if ( value === 'isFuture?')
  return 'Everyday it is'

检查YouDontKnow系列https://github.com/getify/You-Dont-Know-JS

答案 2 :(得分:0)

与函数自动执行相同:function(a) { return 'hello ES'+a}(); 但是这里的论点是2015 然后返回“ hello ES2015”

答案 3 :(得分:0)

好吧,让我们尝试逐步了解它。我们有:

(a => `Hello ES${a}`)(2015);

我们知道ES6中的任何箭头功能都可以由普通功能代替。因此,将括号保持在适当位置(必须保持在适当位置),上面的代码等效于:

(function (a) {
    return `Hello ES${a}`;
})(2015);

现在,这是一个简单的Immediately-Invoked Function Expression。该函数在创建后立即执行,而不是在解析之后执行。在执行脚本中的任何代码之前,都将对其进行分析。同样,解析代码并不会自动意味着它已被执行,例如,如果IIFE在函数内部,则直到调用该函数后,它才会被执行。因此,在您的情况下,我们有一个带有2015参数的立即函数调用,返回了Hello ES2015

您可以阅读有关herehere的IIFE的更多信息。

干杯!