场景如下:
功能:
const fun = (a="keep this", b="change this")=>{return a + b};
如何保留第一个默认参数并覆盖第二个参数?我有几个函数使用了许多默认参数,这些参数是以不同的方式调用的,所以只将b
参数移到第一个参数是不起作用的。为了简单起见,假设a
几乎和b
一样经常被覆盖。
我找到了关于可选参数的答案,但没有一个告诉我如何在指定参数的同时保留参数之前的默认值。
我试着用一种类似python的方式调用它,但没有成功:
fun(b="changed");
发布于 2018-09-15 02:22:16
这可以通过提供函数在任何未定义参数的情况下看到的内容来实现:
((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");
发布于 2018-09-15 02:41:53
在不填充的情况下创建新的稀疏数组就足够了。
const fn = (a = "keep", b = "this", c = "change this") => a + b + c;
console.log(fn(...new Array(2), "changed"));
发布于 2018-09-15 02:29:31
当你没有向a函数传递参数时,你实际上是在传递未定义的参数,所以你可以只对第一个参数这样做。
const f = (a="a", b="b") => console.log(">", a, b);
f(undefined, "new b") // > a new b
另一种方法是只使用dict
const f = ({a="a", b="b"}) => ...
f({b: "b content"})
https://stackoverflow.com/questions/52337414
复制相似问题