javascript - 捕获 JavaScript 解构中的嵌套级别

标签 javascript destructuring

<分区>

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/

相关文章:

javascript - 为什么解构赋值的右侧会忽略其左侧的索引增量

Python赋值解构

javascript - 比较文章和按钮的数据

javascript - 汉堡包菜单按钮更改为 x 按钮

javascript - 删除哈希后 AngularJs 页面刷新问题

javascript - 解构es6但传递动态变量

javascript - ES6从变量解构

javascript - 解构默认属性

javascript - 连接到 Node 服务器自动查找掩码

JavaScript 对象原型(prototype)中毒