(a => `Hello ES${a}`)(2015);
以上代码返回Hello ES2015,但我无法理解带有箭头功能的模板文字在这里如何工作。
答案 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
。
干杯!