[英]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 (立即调用函数表达式),这对于在需要时运行该函数很有用。
实际上通过使用箭头函数(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.