javascript - 使用默认属性破坏作为函数参数的对象
问题描述
我想将一个对象作为参数传递给函数。如果此对象的属性“prop”未定义,则应将其初始化为默认值。
如何使用现代 JS 做到这一点?
我期待这样的事情:
const fun = function(options = { prop: 'default'}) { console.log(options.prop)}
fun({a: 'x', prop: 'hello'}) ... // log: 'hello'
fun({a: 'x'}) ... // log: 'default'
解决方案
如果您想在参数列表中解构,您将无法再访问整个原始对象(options
此处的 , ) - 您将只有解构后的变量。所以,省略options =
部分,把=
,prop
而不是:
. 例如:
const fun = function({ prop = 'default', a }) {
console.log('prop:', prop, 'a:', a);
};
fun({
a: 'x',
prop: 'hello'
}) // log: 'hello'
fun({
a: 'x'
}) // log: 'default'
如果函数也不能使用任何参数调用,您可以默认分配一个空对象:
const fun = function({ prop = 'default', a } = {}) {
console.log('prop:', prop, 'a:', a);
};
fun({
a: 'x',
prop: 'hello'
}) // log: 'hello'
fun({
a: 'x'
}) // log: 'default'
fun(); // log: 'default'
推荐阅读
- php - 为什么我在“字段列表”中获得主键值的未知列?[PHP + MySQL]
- kotlin - 带有可选字段的 Kotlin DSL
- python - Python 错误:ValueError:对已关闭文件的 I/O 操作?下面的代码
- java - Java 节流的“消费者”线程
- docker - docker:使正在运行的容器的文件夹持久化
- excel - 重试在 excel 2010 中为散点图设置数据标签时出现对象错误 - 下面的代码出了什么问题?
- javascript - 没有按钮的文本框。如果您键入一些字母并按“Enter”,则在 1 秒后出现带有文本框文本的警报对话框
- python - PySpark UDF,输入端只有 None 值
- android - Android Kotlin - WebView 显示空白页
- python - plt.suptitle :TypeError:只能将元组(不是“str”)连接到元组