请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于函数参数默认值的问题

老师你好。案例里面的代码我有点想不明白。

https://img1.sycdn.imooc.com/szimg/5ed1249d0965e3ed03900251.jpg

我想的是,调用ajax(),里面只传入一个url地址的话,上面的:

 { body = ' ', method = 'GET', headers = {} } = {},我猜想是:相当于

function ajax(url , {}) 这种形式。

大概是这样的思路:

https://img1.sycdn.imooc.com/szimg/5ed125fa09ab15aa05880119.jpg

所以按这个想法,取不到method值。但是结果打印出了method值。


这里没太想明白,请老师解答。感谢。



正在回答

1回答

这个例子虽然是在函数参数中讲解的,但其实考察的是对于解构赋值的理解,解构赋值中等号两边的结构需要是匹配的。

可以先回顾下这个例子的上一个例子,:

function foo({x, y = 5}){

    console.log(x, y)

}

foo({})

这个函数参数的转化为解构赋值,相当于是:

let {x, y=5} = {}

这里x=undefined,y=5


然后再看问题中的例子,这个例子中第一个url只是个简单的字符串,这个好理解,我们把url参数去掉,只考虑第二个参数,第二个参数转化为解构赋值的写法应该是这样的:

let {body='', method = 'GET',headers = {}} = {}

这里method会取默认值GET。


另外,下面图中红线的{}的作用,是当调用ajax函数的时候,如果不传第二个参数也不会报错。如果没有这个{},第二参数不传就会报错了。

https://img1.sycdn.imooc.com//szimg/5ed12ec609e4cc0408080552.jpg

这个{}在上一个问题中也演示了:

https://img1.sycdn.imooc.com//szimg/5ed12f76093c3a8d13961020.jpg

这种情况就会报错。


可以把两个例子对比来看,应该会好理解一些。

2 回复 有任何疑惑可以回复我~
  • 提问者 夜魇丶 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-05-30 15:30:24
  • 提问者 夜魇丶 #2
    在实战课,第一次遇见回答这么负责任的老师。感谢!
    回复 有任何疑惑可以回复我~ 2020-05-30 15:31:48
  • 谢成 回复 提问者 夜魇丶 #3
    也是希望能够帮忙大家更好的解决问题,加油哦~~
    回复 有任何疑惑可以回复我~ 2020-06-01 09:08:02
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信