关于函数参数赋值默认值,解构赋值问题

关于函数参数赋值默认值,解构赋值问题

function m1({ x = 0, y = 0 } = {}) {
return [x, y]
}

function m2({ x, y } = { x: 0, y: 0 }) {
return [x, y]
}

// 函数没有参数的情况下
m1()
m2()

// x和y都有值的情况下
m1({ x: 3, y: 8 })
m2({ x: 3, y: 8 })

// x有值
m1({ x: 3 })
m2({ x: 3 })

// x和y都没值
m1({})
m2({})

m1({ z: 3 })
m2({ z: 3 })

//function m1和m2的写法的区别是什么?

函数参数的解构赋值与函数调用时的参数有什么联系?为什么m1就有解构赋值而m2没有?

为什么m1和m2的写法会导致每种情况有区别?

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

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

2回答
好帮手慕夭夭 2019-07-01 13:39:32

你好同学,设置默认值是es6规定的语法哦。另外,第二行没有写错,因为函数的参数就是一个对象,并且后面调用时老师已经详细标注了函数的形参,在本段代码中说的对象指的就是参数。和同学说的是一个意思哦。

祝学习愉快,望采纳。

好帮手慕夭夭 2019-07-01 11:43:12

你好同学,同学的几个问题实际上都是围绕着两个函数的区别产生的疑惑,老师在代码中加了注释,同学参数理解一下:

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

祝学习愉快,望采纳。

  • 提问者 soso_crazy #1
    //??为什么设置对象默认属性不是x:0,y:0?而是x=0,y=0? function m1({ x = 0, y = 0 } = {}) 2.图片的第二行注释是不是写错了?应该是如果调用时传递了参数,函数形参参数的默认值就不会生效了,哪怕是一个空对象,那么也是传递参数。??
    2019-07-01 12:49:05
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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