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

标签 javascript default-parameters

场景如下:

功能:

const fun = (a="keep this", b="change this")=>{return a + b};

如何保留第一个默认参数并覆盖第二个默认参数?我有几个函数使用许多以不同方式调用的默认参数,因此仅将 b 参数移至第一个参数是行不通的。为了简单起见,假设 a 被重写的频率几乎与 b 一样频繁。

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

我尝试以类似于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");

关于javascript - 跳过参数以保留 JavaScript 中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52337414/

相关文章:

javascript - 如果条件为真,则附加到元素

javascript - 错误 : ENOENT: no such file or directory, stat ... .steampath

python - "Least Astonishment"和可变默认参数

c++ - 为什么成员变量不能作为参数的默认值?

javascript - 内部函数使用 setTimeout 调用父函数

javascript - 使用 CoffeeScript 进行位置自动完成后无法从 getPlace 获取值

javascript - float 在页面上并充当 anchor 的按钮

c++ - C++中的可选参数,无需重载

C++选择 'wrong'带默认参数的重载方法

c++ - MSVC12中不允许使用默认参数中的模板类实例化吗?