首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >跳过参数以保留JavaScript中的默认值

跳过参数以保留JavaScript中的默认值
EN

Stack Overflow用户
提问于 2018-09-15 02:22:16
回答 3查看 25关注 0票数 0

场景如下:

功能:

代码语言:javascript
复制
const fun = (a="keep this", b="change this")=>{return a + b};

如何保留第一个默认参数并覆盖第二个参数?我有几个函数使用了许多默认参数,这些参数是以不同的方式调用的,所以只将b参数移到第一个参数是不起作用的。为了简单起见,假设a几乎和b一样经常被覆盖。

我找到了关于可选参数的答案,但没有一个告诉我如何在指定参数的同时保留参数之前的默认值。

我试着用一种类似python的方式调用它,但没有成功:

代码语言:javascript
复制
fun(b="changed");
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-15 02:22:16

这可以通过提供函数在任何未定义参数的情况下看到的内容来实现:

代码语言:javascript
复制
((a="keep this", b="change this")=>{return a + b})(undefined, "changed");

简单地将参数位置指定为未定义将导致使用缺省值。它不像Python那样简单和直接,但是它可以在任何知道要跳过的参数数量的情况下工作。

下面是一个可以在多个参数上使用的示例,在需要跳过许多参数的情况下可能会很有用:

代码语言:javascript
复制
((a="keep", b="this", c="change this")=>{
   return a+b+c
   })(...(new Array(2).fill(undefined)), "changed");
票数 2
EN

Stack Overflow用户

发布于 2018-09-15 02:41:53

在不填充的情况下创建新的稀疏数组就足够了。

代码语言:javascript
复制
const fn = (a = "keep", b = "this", c = "change this") => a + b + c;

console.log(fn(...new Array(2), "changed"));

票数 1
EN

Stack Overflow用户

发布于 2018-09-15 02:29:31

当你没有向a函数传递参数时,你实际上是在传递未定义的参数,所以你可以只对第一个参数这样做。

代码语言:javascript
复制
const f = (a="a", b="b") => console.log(">", a, b);
f(undefined, "new b") // > a new b

另一种方法是只使用dict

代码语言:javascript
复制
const f = ({a="a", b="b"}) => ...
f({b: "b content"})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52337414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档