首页 > 解决方案 > 使用默认属性破坏作为函数参数的对象

问题描述

我想将一个对象作为参数传递给函数。如果此对象的属性“prop”未定义,则应将其初始化为默认值。

如何使用现代 JS 做到这一点?

我期待这样的事情:

const fun = function(options = { prop: 'default'}) { console.log(options.prop)}


fun({a: 'x', prop: 'hello'}) ... // log: 'hello'

fun({a: 'x'}) ... // log: 'default'

标签: javascriptfunctionobjectecmascript-6

解决方案


如果您想在参数列表中解构,您将无法再访问整个原始对象(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'


推荐阅读