javascript - 在具有默认参数的方法中仅提供某些 javascript 参数
问题描述
如果我有这样的方法,
function something(a,b,c=5,d=10,e=false)
并且只想提供参数 a、b 和 e,并将其余部分设置为默认值。
在 python 中,我会调用这个函数,比如:
k = something(a,b,e=True)
但是是否有一种等效的方法可以在 Javascript 中仅指定一个默认参数?
解决方案
您必须使用以下内容填写缺失的内容undefined
:
k = something(a, b, undefined, undefined, true)
虽然,更好的是重写你的函数来接收一个选项参数作为参数:
function something(a, b, options) {
if (options.c === undefined) options.c = 5;
if (options.d === undefined) options.d = 10;
if (options.e === undefined) options.e = false;
// use options.c, options.d and options.e here
// (give better names to them of course)
}
k = something(a, b, { e: true })
或者使用 ES6 解构赋值语法:
function something(a, b, { c=5, d=10, e=false }) {
// use c, d and e directly here
// (again, you should give better names to them of course)
}
k = something(a, b, { e: true })
这是在 javascript 中从 Python 处理“命名参数”的常用方法。由于无法直接引用命名参数(就像在 python 中所做的那样),所以在 JavaScript 中我们经常使用options
参数(这是一个可以轻松内联创建的普通对象)。当你习惯了这种语法时,你会发现它几乎和 python 中的一样。
推荐阅读
- reactjs - 如何使用 React Hooks 在第一次渲染时加载带有道具的子组件
- javascript - ag-grid:使整行成为行拖动的夹点
- python - 如何使用输入框设置变量
- haskell - 我可以概括 Haskell 中的类约束吗?
- graphql - 如何修复“错误:GraphQL 错误:无法读取未定义的属性 'id'”?
- splunk - 根据其他字段的值计算一个字段的值
- c++ - 具有多线程支持的 RenderClass,将函数调用推送到向量以在另一个线程上调用
- swift - Swift SQLite 查询不返回任何结果
- docker - Terraform 不在工作节点上创建 docker 服务
- python - 在多级层次结构 Pandas Dataframe 中更改索引