关于箭头函数问题

关于箭头函数问题

http://img1.sycdn.imooc.com//climg/5f634b530941431c04580387.jpg这里的a是函数名,没有入参时,可以省略()吗?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕久久 2020-09-18 16:57:50

同学你好,以下面的函数为例:

http://img1.sycdn.imooc.com//climg/5f6474f30909047205470295.jpg

函数f的形参是a,调用f时传入的实参是函数,所以a可以调用(a是一个函数)

而函数f写成箭头函数,就是如下形式:

http://img1.sycdn.imooc.com//climg/5f64754b0942696c04600187.jpg

而“函数没有名字”这句话是说,下图中,选中的整体,是没有名字的:

http://img1.sycdn.imooc.com//climg/5f6475fb093eb8b406090216.jpg

同学再试着理解一下。

祝学习愉快!

  • 提问者 慕仰5025445 #1
    谢谢,大致好像明白了
    2020-09-18 17:01:07
好帮手慕久久 2020-09-18 12:55:38

同学你好,问题解答如下:

1.

http://img1.sycdn.imooc.com/climg/5f643d77096beaa905540253.jpg

该图中,“这个整体是promise的形参”这句话是对的,但是a不是这个整体函数的名字,它是这个整体函数的形参的名字(该形参是一个函数),即该函数没有名字(函数作为参数可以没有名字),由于参数只有一个,所以可以省略括号,如下:

http://img1.sycdn.imooc.com/climg/5f643da0093a771909420322.jpg

2. 单写如下代码,是不合法的:

http://img1.sycdn.imooc.com/climg/5f643dad09d8ade604260257.jpg

需要改成如下形式:

http://img1.sycdn.imooc.com/climg/5f643db809eff0b806370343.jpg

或者写成自执行函数:

http://img1.sycdn.imooc.com/climg/5f643dc30944d25807690249.jpg

祝学习愉快!

  • 提问者 慕仰5025445 #1
    a表示形参,函数没有名字,为啥还能执行a() ?不太明白
    2020-09-18 13:26:47
好帮手慕久久 2020-09-18 10:03:38

同学你好,参数a是形参,它是promise对象提供给我们的参数,通常有两个,一个代表成功(resolve),一个代表失败(reject):

http://img1.sycdn.imooc.com//climg/5f6416d9092678d606020201.jpg

它们不是调用函数f()时传入的参数,如果我们只使用其中一个参数,可以省略(),即红框中的代码,是正确的,此时红框中的a,代表使用的是resolve。

如果我的回答帮到了你,欢迎采纳,祝学习愉快!

  • 提问者 慕仰5025445 #1
    a => { setTimeout(function(){ a(); },1000); } 这个整体是promise的形参,然后这个形参是一个函数,a不是函数名吗,然后a这个函数没有形参,也没括号
    2020-09-18 10:12:26
  • 提问者 慕仰5025445 #2
    a => { setTimeout(function(){ a(); },1000); } 这样的箭头函数合法吗?没有形参也去掉了括号
    2020-09-18 10:13:22
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师