首页 > 解决方案 > 默认参数顺序错误结果

问题描述

当我尝试运行它时,我看到了一个给出错误输出的示例。我不明白为什么在按顺序提供时会得到错误的结果。在最后一次通话中,我期待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

标签: javascriptdefault-arguments

解决方案


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

function f(prmObj){ return(`a=${prmObj.a}, b=${prmObj.b}`) }

f({b: 10, a: 7})  // a=7, b=10

推荐阅读