使用默认属性销毁作为函数参数的对象

Ask*_*ker 3 javascript function object ecmascript-6

我想将一个对象作为参数传递给函数。如果该对象的属性'prop'未定义,则应使用默认值对其进行初始化。

如何使用现代JS?

我期望这样的事情:

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


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

fun({a: 'x'}) ... // log: 'default'
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 5

如果要在参数列表中进行重构,则将无法再访问整个原始对象(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'
Run Code Online (Sandbox Code Playgroud)

如果也可能不使用任何参数调用该函数,则可以默认分配一个空对象:

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'
Run Code Online (Sandbox Code Playgroud)