我是Javascript的初学者,我的老师给了我这个代码:
var z = (x=>(y=>2*y)(x)+3)(5);(对不起,我的英语水平很差,我是个法国人。)
我必须用简单的函数重写这段代码,但我对自己不太确定。
对我来说,我可以重写如下代码:
var x = 5;
var y = 2 * x;
var z = y + 3;但是,它不是用简单函数重写的。
我的问题是:能不能帮助我理解箭头函数在这种情况下是如何工作的,并告诉我如何用简单的函数重写这段代码。
发布于 2016-10-15 09:56:29
具有a => b窗体的箭头函数在调用时隐式返回b。你可以想象他们:
function (a) { return b }此外,您的代码示例被包装在()中并立即被调用,称为立即调用函数表达式(IIFE)模式。
(a => b)(3)这和
(function (a) { return b })(3)其中两个函数都会立即被定义和调用,因此它的名称。
现在,您所要做的就是使用这两种思想,即隐式返回和IIFE作为箭头函数,将您的示例重写为具有显式返回和常规IIFE的普通函数。
换言之:
return语句(在箭头函数中隐式)function()。下面是用简单英语编写的代码示例中所发生的事情:
5传递到x的生活中x传给另一个带走y的生活2 * y3添加到第二人生的回归中或者作为数学公式:
z = x = (2 * y) + 3发布于 2016-10-15 10:06:20
我们有:
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(){})()是一个立即执行的匿名函数声明。最后,变量z是一个简单的数字。
https://stackoverflow.com/questions/40057512
复制相似问题