繁体   English   中英

这个 ES6 箭头函数代码块是做什么的?

[英]What this ES6 arrow function code block does?

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

上面的代码返回 Hello ES2015,但我无法理解模板文字是如何使用箭头函数在这里工作的。

它是一个IIFE (立即调用函数表达式)。

它定义了一个匿名函数,它接受一个参数, a并返回一个字符串串联Hello ES与价值a

a => `Hello ES${a}`

/* is equivalent to:

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

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

好吧,让我们试着一步一步地理解它。 我们有:

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

我们知道 ES6 中的任何箭头函数都可以替换为普通函数。 因此,保持括号就位(必须保持原位的括号),上面的代码等效于:

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

现在,这是一个简单的立即调用函数表达式 该函数在创建后立即执行,而不是在解析后执行。 整个脚本块在其中的任何代码被执行之前被解析。 此外,解析代码并不自动意味着它已被执行,例如,如果 IIFE 在一个函数内,那么在调用该函数之前它不会被执行。 因此,在您的情况下,我们有一个带有2015参数的立即函数调用,返回Hello ES2015

您可以在此处此处阅读有关 IIFE 的更多信息。

干杯!

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM