10

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

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

等效的 ES5 将是:

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

但是如果我想同时引用对象和params嵌套属性怎么办?这是我得到的最接近的,但缺点是它不适用于箭头函数,因为它们无权访问对象:valuenamearguments

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

2 回答 2

5

arguments在箭头函数中不可用,这会影响 ES6 中函数参数的一致处理方式。

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

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

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

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

样板变量解构有它的好处;即使它们当前未使用,这种方式也更容易调试param或在断点处进行调试。args

于 2018-03-02T19:49:14.597 回答
1

接下来呢:

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

或者:

function(params, {name, value} = params) {
    console.log(params, name, value)
}
于 2018-03-02T18:43:31.847 回答