问题标签 [destructuring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
798 浏览

javascript - 用解构赋值交换元组元素

我想使用解构赋值来交换元组的元素,如下所示:

但是,这会产生[1, 1].

Babel 将其编译为

我原以为这应该编译为

Traceur 的行为与 babel 相同。所以我想这是指定的行为?

我想将这两个元素交换到位。所以是唯一的方法...

但我认为以上是解构分配应该让我避免做的事情。

我完全有能力颠倒数组中两个元素的顺序,所以这不是我的问题。我可以做一些简单的事情a.push(a.shift()),它符合就地交换的标准。

我最感兴趣的是为什么解构不像它应该的那样工作。

0 投票
3 回答
9921 浏览

javascript - How do I destructure all properties into the current scope/closure in ES2015?

I'd like to do something like this:

I can't seem to find or figure out how to do this but I really thought I had seen it done somewhere before! :P

NOTE: I'm using Babel with stage set to 0;

CONTEXT: I'm trying to be drier in JSX and not reference this.state or this.props everywhere. And also not have to keep adding properties to destructure if the data changes.

0 投票
2 回答
2674 浏览

javascript - 对象解构语法 - ES6

我经历过数组解构语法,这很好理解。

当我们说 时,我们到底在做什么var {p, q} = o;

pqin与ie和var {p, q}的性质不同吗?如果是,o'p''q'

为什么var {a, b} = o;不工作?

*注意:我了解到,字典键是javascript 中的字符串文字。*

0 投票
5 回答
34419 浏览

arrays - 解构数组时的类型

有可能写这样的东西吗?

0 投票
2 回答
211 浏览

javascript - chrome/chromium 44 中的解构语句未被识别

据我所知,这是有效的 EcmaScript6:

Firefox 可以正常运行此代码,但 Google Chrome 和 Chromium 都给我这个错误:

我知道在 Firefox 中,必须在 type 属性中使用“version=1.7”标记脚本标签才能正常工作,但在 Google Chrome 中,这会导致脚本被忽略。一个普通的脚本标签会给出这个错误。

这是否意味着谷歌浏览器没有实现这个功能?还是我错过了什么?

0 投票
3 回答
538 浏览

clojure - Clojure - 解构数组与地图

Clojure 有一个非常好的解构语法,它适用于数组和映射。

我经常在两者之间混淆,这意味着我不确定该选择哪一个。什么时候应该使用地图作为参数,什么时候应该使用数组?

例如,我遇到了以下数据,我想传递一个经度和一个纬度。我可以将它作为{:lat 12 :lng 34}or[12 34]或作为两个参数传递。

注意:我不使用两个参数,因为我认为coords绑定更好。

然后假设我想添加新字段(精度,高度,时间戳......),似乎优势然后转到地图:

  • 带有更多参数的数组似乎不太可读(您必须查看原型以了解解构以及使用的参数)。
  • 在地图中,我可以添加新字段并打印它是自描述的(键充当标签)。

但后来我经常会得到将大options参数作为映射的函数,并带有一些不相关的子选项。即使只有 10 个键,它也感觉有点臃肿。

那么,什么时候应该使用 map,什么时候应该在函数参数中使用数组?在可读性/可扩展性/性能方面有哪些优点/缺点?另外,core.match在这种情况下可以提供帮助吗?

0 投票
2 回答
1358 浏览

ecmascript-6 - 是否可以在单个语句中解构对象并生成新对象?

在第一个表达式中,我们通过解构一个杂乱的对象来定义四个常量。在第二个表达式中,我们将它们组合成一个新对象。我想在不复制有趣字段列表的情况下一步完成,但因为第一个表达式没有定义对象,这似乎是不可能的。真的吗?我们非常接近 Clojurian 的胜利!

我尝试了以下但没有成功。任何 ECMAScript 编译器都是公平的游戏,但我没有选择只使用 Clojurescript。

0 投票
2 回答
478 浏览

javascript - Babel 对 ES6 对象解构的实现是否正确?

所以基本的结构很好,{a, b} = obj可以转换为a = obj.a; b = obj.b.

我的问题是我不小心遇到了一些奇怪的语法,我想知道是否有人可以指出我的规范,因为我找不到它:

这两个ab分配,然后返回obj.c。对于字节流解码器,它实际上对我非常有用,因为我可以写:

我的问题是我在任何地方都没有看到这种语法,并且不想依赖于错误实现或处于提案阶段的东西。

0 投票
1 回答
18942 浏览

javascript - 类构造函数中的 ES6 解构

这可能听起来很荒谬,但请容忍我。我想知道语言级别是否支持将对象解构为构造函数中的类属性,例如

0 投票
1 回答
1790 浏览

compiler-errors - Typescript 中的解构导致编译器错误 TS1008 和 TS1005

我想在打字稿中使用解构,示例代码:

我的编译命令tsc --t es5 destructuring.ts

打字稿版本1.6.2

IDE 是vs code.

然后导致三个错误:

destructuring.ts(1,5): error TS1008: Unexpectedtoken; 'identifier' expected.

destructuring.ts(1,21): error TS1008: Unexpected token; 'module, class, interface, enum, import or statement' expected.

destructuring.ts(1,45): error TS1005: ';' expected.;

在我的桌面(窗口 8.1 x64)中,命令npm -g list、显示typescript@1.6.2和命令 tsc --version显示Version 1.0.3.0

打字稿 1.0.3.0

但在我的笔记本电脑(Windows 7 x64)中,命令tsc --version显示message TS6029: Version 1.6.2打字稿 1.6.2