默认参数顺序错误



我看到过一个例子,当我试图运行它时给出错误的输出。我不明白为什么我得到错误的结果,而它是按顺序提供的。在最后一次通话中,我希望是a=7, b=10。怎么了?

"use strict";
function f(a=1, b=2){ return(`a=${a}, b=${b}`) }
f() // a=1, b=2
f(a=5) // a=5, b=2
f(a=7, b=10) // a=7, b=10
f(b=10, a=7) // Order is required: a=10, b=7

提供的参数按函数中定义的顺序处理。要实现类似的目的,您可以使用对象参数:

function f(prmObj){ return(`a=${prmObj.a}, b=${prmObj.b}`) }
f({b: 10, a: 7})  // a=7, b=10

最新更新