JavaScript默认参数疑问:传入参数为何未使用默认值?
为什么带默认参数的箭头函数传入参数后没有使用默认值?
嘿,这个问题其实是对JavaScript默认参数的作用机制理解有点偏差啦~
你定义的箭头函数:
let add = (a = 0,b = 0) => { return a+b; };
这里的a = 0和b = 0是默认参数,它的作用是:当你调用函数时没有传入对应参数,或者传入的是undefined时,才会用这个默认值来替代。
而你调用add(5,2)的时候,已经明确给a传入了5,给b传入了2,这时候默认值0就不会生效了——函数会直接使用你传入的参数值进行计算,所以返回5+2=7是完全符合预期的结果。
举几个例子帮你更清楚理解:
- 调用
add():没有传任何参数,a和b都用默认值0,返回0 - 调用
add(3):只传了第一个参数,a=3,b用默认值0,返回3 - 调用
add(undefined, 4):第一个参数传了undefined,a用默认值0,b=4,返回4
如果你的需求是不管传入什么参数,都强制让a和b等于0来计算,那得把逻辑改成在函数内部重新赋值,比如:
let add = (a, b) => { a = 0; b = 0; return a+b; };
这样不管你传什么参数,函数内部都会把a和b设为0,调用add(5,2)就会返回0了。
内容的提问来源于stack exchange,提问作者dev20
相关产品推荐
相关产品推荐

