Destructure对象参数,还要引用参数作为对象吗? [重复]

问题描述 投票:6回答:2

这个问题在这里已有答案:

使用ES6,您可以在函数参数中构造对象:

({name, value}) => { console.log(name, value) }

等效的ES5将是:

function(params) { console.log(params.name, params.value) }

但是如果我想参考params对象和嵌套属性valuename呢?这是我得到的最接近的,但缺点是它不能用于箭头函数,因为它们无法访问arguments对象:

function({name, value}) {
  const params = arguments[0]
  console.log(params, name, value)
}
javascript ecmascript-6 destructuring object-destructuring
2个回答
4
投票

arguments在箭头函数中不可用,这会影响在ES6中如何一致地处理函数参数。

如果使用原始参数,则应在函数内部进行解构:

(param) => {
  const {name, value} = param;
  // ...
}

如果预期有多个参数并且发生一些参数协商(例如,类似于arguments.length),则应使用rest参数:

(...args) => {
  const [param] = args;
  // ...
}

Boilerplate变量解构有其好处;这种方式更容易在断点处调试paramargs,即使它们目前尚未使用。


0
投票

下一步:

function({name, value}, params=arguments[0]) {
    console.log(params, name, value)
}

要么:

function(params, {name, value} = params) {
    console.log(params, name, value)
}
© www.soinside.com 2019 - 2024. All rights reserved.