我发现了很多创造性的方法来设置ES5和ES5中的默认参数。 ES6但我还没有看到如何在JavaScript中覆盖默认参数的简单示例。举个例子:
new Connection(host, port = 25575, password, timeout = 5000)
默认超时很好,但端口号不是。调用此函数时,JavaScript始终将第二个参数视为password
参数:
myConnection = connFactory.getConnection(process.env.IP,
process.env.PORT,
process.env.PASSWORD)
此代码导致身份验证错误,因为假定第二个参数为password
。如何在没有修改原始函数定义的情况下覆盖port
的默认参数?
答案 0 :(得分:4)
您可以使用 config 对象作为函数的参数。例如:
function foo({a='SO', b}) {
console.log(a, b)
}
foo({b: 'Yeap', a: 'baz'}) // baz Yeap
foo({b: 'foo'}) // SO foo
它将保证您的订购。
答案 1 :(得分:0)
假设'getConnection'不是你的功能,而是来自一些无法访问的地方,这里有一些解决方案可以保证工作。这是一项任务是准备所有参数的功能。
function getConnectionRunner(host, password, optional = {port: 25575, timeout: 5000}) {
const port = optional.port || 25575;
const timeout = optional.timeout || 5000;
connFactory.getConnection(host, port, password, timeout);
}