<分区>
JavaScript 解构是否具有捕获对象及其内容的语法?
换句话说,如果没有下面的 const
行,我可以在函数的 arg 列表中完全执行以下操作吗?
f = (a) => {
const {b} = a;
console.log("I see:", a, "and", b);
}
f({b:42})
==> I see {b: 42} and 42
(FWIW:我正在考虑 Clojure 或 ClojureScript 中的 :as
之类的东西)。
<分区>
JavaScript 解构是否具有捕获对象及其内容的语法?
换句话说,如果没有下面的 const
行,我可以在函数的 arg 列表中完全执行以下操作吗?
f = (a) => {
const {b} = a;
console.log("I see:", a, "and", b);
}
f({b:42})
==> I see {b: 42} and 42
(FWIW:我正在考虑 Clojure 或 ClojureScript 中的 :as
之类的东西)。
最佳答案
是的,你可以
const f = (a, {b} = a ) => {
console.log("I see:", a, "and", b);
}
f({b:42})
关于 destructuring assignment 的更多用例你可以看到这个
旁注:-在函数定义中总是比你的函数调用多保留一个参数。
Update 这样一来,您就不必担心函数定义中的一个额外参数
const f = (...z) => (a=z[0],{b}=z[0],...arguments) => {
console.log("I see:", a, "and", b, z);
}
f({b:42},{b:32})()
你也可以用 IIFE 试试@bergi 感谢你的输入。
const f = (a, ...z) => (({b}) => {
console.log("I see:", a, "and", b, z);
})(a);
f({b:42},{b:32})
关于javascript - 捕获 JavaScript 解构中的嵌套级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54931090/