跳过参数以保留 JavaScript 中的默认值
Skiping parameters to retain defaults in JavaScript
场景如下:
函数:
const fun = (a="keep this", b="change this")=>{return a + b};
如何保留第一个默认参数并覆盖第二个?我有几个函数使用许多以不同方式调用的默认参数,因此仅将 b
参数移动到第一个参数是行不通的。为了简单起见,假设 a
被覆盖的频率几乎与 b
.
一样高
我找到了有关可选参数的答案,但 none 向我展示了如何指定参数,同时在所述参数之前保留默认值。
我尝试以类似于 python 的方式调用它,但没有成功:
fun(b="changed");
这可以通过提供函数在任何未定义参数的情况下看到的内容来完成:
((a="keep this", b="change this")=>{return a + b})(undefined, "changed");
简单地将参数位置指定为未定义将导致使用默认值。它不像 Python 那样简单和直接,但是它可以在您知道要跳过的参数数量的任何情况下使用。
这是一个可以用于多个参数的示例,在需要跳过许多参数的情况下可能很有用:
((a="keep", b="this", c="change this")=>{
return a+b+c
})(...(new Array(2).fill(undefined)), "changed");
当你没有给 a 函数传递参数时,你确实传递了未定义的,所以你可以只对第一个参数这样做。
const f = (a="a", b="b") => console.log(">", a, b);
f(undefined, "new b") // > a new b
另一种方法是只使用字典
const f = ({a="a", b="b"}) => ...
f({b: "b content"})
创建一个新的稀疏数组就可以了,不用填充。
const fn = (a = "keep", b = "this", c = "change this") => a + b + c;
console.log(fn(...new Array(2), "changed"));
场景如下:
函数:
const fun = (a="keep this", b="change this")=>{return a + b};
如何保留第一个默认参数并覆盖第二个?我有几个函数使用许多以不同方式调用的默认参数,因此仅将 b
参数移动到第一个参数是行不通的。为了简单起见,假设 a
被覆盖的频率几乎与 b
.
我找到了有关可选参数的答案,但 none 向我展示了如何指定参数,同时在所述参数之前保留默认值。
我尝试以类似于 python 的方式调用它,但没有成功:
fun(b="changed");
这可以通过提供函数在任何未定义参数的情况下看到的内容来完成:
((a="keep this", b="change this")=>{return a + b})(undefined, "changed");
简单地将参数位置指定为未定义将导致使用默认值。它不像 Python 那样简单和直接,但是它可以在您知道要跳过的参数数量的任何情况下使用。
这是一个可以用于多个参数的示例,在需要跳过许多参数的情况下可能很有用:
((a="keep", b="this", c="change this")=>{
return a+b+c
})(...(new Array(2).fill(undefined)), "changed");
当你没有给 a 函数传递参数时,你确实传递了未定义的,所以你可以只对第一个参数这样做。
const f = (a="a", b="b") => console.log(">", a, b);
f(undefined, "new b") // > a new b
另一种方法是只使用字典
const f = ({a="a", b="b"}) => ...
f({b: "b content"})
创建一个新的稀疏数组就可以了,不用填充。
const fn = (a = "keep", b = "this", c = "change this") => a + b + c;
console.log(fn(...new Array(2), "changed"));