首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript - Arrow函数的问题

Javascript - Arrow函数的问题
EN

Stack Overflow用户
提问于 2016-10-15 09:48:43
回答 2查看 68关注 0票数 0

我是Javascript的初学者,我的老师给了我这个代码:

代码语言:javascript
复制
var z = (x=>(y=>2*y)(x)+3)(5);

(对不起,我的英语水平很差,我是个法国人。)

我必须用简单的函数重写这段代码,但我对自己不太确定。

对我来说,我可以重写如下代码:

代码语言:javascript
复制
var x = 5;
var y = 2 * x;
var z = y + 3;

但是,它不是用简单函数重写的。

我的问题是:能不能帮助我理解箭头函数在这种情况下是如何工作的,并告诉我如何用简单的函数重写这段代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-15 09:56:29

具有a => b窗体的箭头函数在调用时隐式返回b。你可以想象他们:

代码语言:javascript
复制
function (a) { return b }

此外,您的代码示例被包装在()中并立即被调用,称为立即调用函数表达式(IIFE)模式。

代码语言:javascript
复制
(a => b)(3)

这和

代码语言:javascript
复制
(function (a) { return b })(3)

其中两个函数都会立即被定义和调用,因此它的名称。

现在,您所要做的就是使用这两种思想,即隐式返回和IIFE作为箭头函数,将您的示例重写为具有显式返回和常规IIFE的普通函数。

换言之:

  1. 添加假定存在的return语句(在箭头函数中隐式)
  2. 在每个箭头函数的参数周围添加function()

下面是用简单英语编写的代码示例中所发生的事情:

  • 5传递到x的生活中
  • 把那个x传给另一个带走y的生活
  • 从第二个生命中返回2 * y
  • 3添加到第二人生的回归中
  • 第一次生命的返回结果

或者作为数学公式:

代码语言:javascript
复制
z = x = (2 * y) + 3
票数 -1
EN

Stack Overflow用户

发布于 2016-10-15 10:06:20

我们有:

代码语言:javascript
复制
var z = (x=>(y=>2*y)(x)+3)(5);

箭头函数定义表示x=>(....)意味着(function(x){ return ...})

所以

代码语言:javascript
复制
var z = (function(x) {
    return (y=>2*y)(x)+3;
})(5);

现在我们有了另一个箭头函数y=>2*y,意思是(function(y) { return 2*y})

所以

代码语言:javascript
复制
var z = (function(x) {
    return (function(y) {
            return 2*y;
        })(x) + 3;
})(5);

仅此而已。

请记住,(function(){})()是一个立即执行的匿名函数声明。最后,变量z是一个简单的数字。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40057512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档