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

来源:5-1 函数扩展之默认参数

soso_crazy

2019-06-30 23:13:10

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的写法会导致每种情况有区别?

写回答

2回答

好帮手慕夭夭

2019-07-01

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

祝学习愉快,望采纳。

0

好帮手慕夭夭

2019-07-01

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

http://img.mukewang.com/climg/5d19814b0001260913520817.jpg

祝学习愉快,望采纳。

0
hoso_crazy
h //??为什么设置对象默认属性不是x:0,y:0?而是x=0,y=0? function m1({ x = 0, y = 0 } = {}) 2.图片的第二行注释是不是写错了?应该是如果调用时传递了参数,函数形参参数的默认值就不会生效了,哪怕是一个空对象,那么也是传递参数。??
h019-07-01
共1条回复

0 学习 · 10739 问题

查看课程