我是Javascript的初学者,我的老师给了我这段代码:
var z = (x=>(y=>2*y)(x)+3)(5);
(抱歉我的英语,我是一个英语水平不高的法国人^^)
我必须用简单的函数重写这段代码,但我不确定自己。
对我来说,我可以重写这段代码,如:
var x = 5;
var y = 2 * x;
var z = y + 3;
但是,它不是用简单函数重写的。
我的问题是:你能帮助我理解箭头函数在这种情况下是如何工作的吗?让我知道如何用简单的函数重写这段代码。
答案 0 :(得分:-1)
具有a => b
形式的箭头函数在调用时隐式返回b
。你可以想象他们:
function (a) { return b }
此外,您的代码示例包含在()
中并立即调用,模式称为Immediately Invoked Function Expression (IIFE):
(a => b)(3)
与
相同(function (a) { return b })(3)
两个函数都被立即定义和调用,因此名称。
现在你所要做的就是使用箭头函数的这两个想法,隐式返回和IIFE,将你的例子重写为具有显式返回和常规IIFE的普通函数。
换句话说:
添加假定存在的return
语句(隐含在箭头函数中)
在每个箭头功能的参数周围添加function()
。
以下简单英语代码示例中发生了什么:
5
传递到IIFE,其中x
x
传递给另一个采用y
2 * y
3
添加到第二个IIFE返回的内容或者作为数学公式:
z = x = (2 * y) + 3
答案 1 :(得分:-1)
我们有:
var z = (x=>(y=>2*y)(x)+3)(5);
箭头功能定义表明x=>(....)
表示(function(x){ return ...})
所以
var z = (function(x) {
return (y=>2*y)(x)+3;
})(5);
我们现在有另一个箭头函数y=>2*y
,这意味着(function(y) { return 2*y})
。
所以
var z = (function(x) {
return (function(y) {
return 2*y;
})(x) + 3;
})(5);
这就是全部。
请记住,(function(){})()
它是一个立即执行的匿名函数声明。所以最后,var z
是一个简单的数字。