解构对象参数,还要引用参数作为对象?
Destructure object parameter, but also have reference to the parameter as an object?
使用 ES6,您可以在函数参数中解构对象:
({name, value}) => { console.log(name, value) }
等效的 ES5 将是:
function(params) { console.log(params.name, params.value) }
但是如果我想要同时引用 params
对象和嵌套属性 value
和 name
怎么办?这是我得到的最接近的,但缺点是它不能与箭头函数一起使用,因为它们无法访问 arguments
对象:
function({name, value}) {
const params = arguments[0]
console.log(params, name, value)
}
接下来呢:
function({name, value}, params=arguments[0]) {
console.log(params, name, value)
}
或者:
function(params, {name, value} = params) {
console.log(params, name, value)
}
arguments
在箭头函数中不可用,这会影响函数参数在 ES6 中的处理方式。
如果使用原始参数,需要在函数内部解构:
(param) => {
const {name, value} = param;
// ...
}
如果需要多个参数并进行一些参数协商(例如,类似于arguments.length
),则应使用剩余参数:
(...args) => {
const [param] = args;
// ...
}
样板变量解构有它的好处;通过这种方式在断点处调试 param
或 args
更容易,即使它们当前未在使用中也是如此。
使用 ES6,您可以在函数参数中解构对象:
({name, value}) => { console.log(name, value) }
等效的 ES5 将是:
function(params) { console.log(params.name, params.value) }
但是如果我想要同时引用 params
对象和嵌套属性 value
和 name
怎么办?这是我得到的最接近的,但缺点是它不能与箭头函数一起使用,因为它们无法访问 arguments
对象:
function({name, value}) {
const params = arguments[0]
console.log(params, name, value)
}
接下来呢:
function({name, value}, params=arguments[0]) {
console.log(params, name, value)
}
或者:
function(params, {name, value} = params) {
console.log(params, name, value)
}
arguments
在箭头函数中不可用,这会影响函数参数在 ES6 中的处理方式。
如果使用原始参数,需要在函数内部解构:
(param) => {
const {name, value} = param;
// ...
}
如果需要多个参数并进行一些参数协商(例如,类似于arguments.length
),则应使用剩余参数:
(...args) => {
const [param] = args;
// ...
}
样板变量解构有它的好处;通过这种方式在断点处调试 param
或 args
更容易,即使它们当前未在使用中也是如此。