使用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)
}
答案 0 :(得分:4)
arguments
在箭头函数中不可用,这会影响在ES6中如何一致地处理函数参数。
如果使用原始参数,则应在函数内进行解构:
(param) => {
const {name, value} = param;
// ...
}
如果需要多个参数并进行一些参数协商(例如,与arguments.length
类似),则应使用rest参数:
(...args) => {
const [param] = args;
// ...
}
Boilerplate变量解构有其好处;这种方式更容易在断点处调试param
或args
,即使它们当前没有使用。
答案 1 :(得分:0)
下一步:
function({name, value}, params=arguments[0]) {
console.log(params, name, value)
}
或者:
function(params, {name, value} = params) {
console.log(params, name, value)
}