问题标签 [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.
javascript - 用解构赋值交换元组元素
我想使用解构赋值来交换元组的元素,如下所示:
但是,这会产生[1, 1]
.
Babel 将其编译为
我原以为这应该编译为
Traceur 的行为与 babel 相同。所以我想这是指定的行为?
我想将这两个元素交换到位。所以是唯一的方法...
但我认为以上是解构分配应该让我避免做的事情。
我完全有能力颠倒数组中两个元素的顺序,所以这不是我的问题。我可以做一些简单的事情a.push(a.shift())
,它符合就地交换的标准。
我最感兴趣的是为什么解构不像它应该的那样工作。
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.
javascript - 对象解构语法 - ES6
我经历过数组解构语法,这很好理解。
当我们说 时,我们到底在做什么var {p, q} = o;
?
p
和q
in与ie和var {p, q}
的性质不同吗?如果是,o
'p'
'q'
为什么var {a, b} = o;
不工作?
*注意:我了解到,字典键是javascript 中的字符串文字。*
arrays - 解构数组时的类型
有可能写这样的东西吗?
javascript - chrome/chromium 44 中的解构语句未被识别
据我所知,这是有效的 EcmaScript6:
Firefox 可以正常运行此代码,但 Google Chrome 和 Chromium 都给我这个错误:
我知道在 Firefox 中,必须在 type 属性中使用“version=1.7”标记脚本标签才能正常工作,但在 Google Chrome 中,这会导致脚本被忽略。一个普通的脚本标签会给出这个错误。
这是否意味着谷歌浏览器没有实现这个功能?还是我错过了什么?
clojure - Clojure - 解构数组与地图
Clojure 有一个非常好的解构语法,它适用于数组和映射。
我经常在两者之间混淆,这意味着我不确定该选择哪一个。什么时候应该使用地图作为参数,什么时候应该使用数组?
例如,我遇到了以下数据,我想传递一个经度和一个纬度。我可以将它作为{:lat 12 :lng 34}
or[12 34]
或作为两个参数传递。
注意:我不使用两个参数,因为我认为coords
绑定更好。
然后假设我想添加新字段(精度,高度,时间戳......),似乎优势然后转到地图:
- 带有更多参数的数组似乎不太可读(您必须查看原型以了解解构以及使用的参数)。
- 在地图中,我可以添加新字段并打印它是自描述的(键充当标签)。
但后来我经常会得到将大options
参数作为映射的函数,并带有一些不相关的子选项。即使只有 10 个键,它也感觉有点臃肿。
那么,什么时候应该使用 map,什么时候应该在函数参数中使用数组?在可读性/可扩展性/性能方面有哪些优点/缺点?另外,core.match
在这种情况下可以提供帮助吗?
ecmascript-6 - 是否可以在单个语句中解构对象并生成新对象?
在第一个表达式中,我们通过解构一个杂乱的对象来定义四个常量。在第二个表达式中,我们将它们组合成一个新对象。我想在不复制有趣字段列表的情况下一步完成,但因为第一个表达式没有定义对象,这似乎是不可能的。真的吗?我们非常接近 Clojurian 的胜利!
我尝试了以下但没有成功。任何 ECMAScript 编译器都是公平的游戏,但我没有选择只使用 Clojurescript。
javascript - Babel 对 ES6 对象解构的实现是否正确?
所以基本的结构很好,{a, b} = obj
可以转换为a = obj.a; b = obj.b
.
我的问题是我不小心遇到了一些奇怪的语法,我想知道是否有人可以指出我的规范,因为我找不到它:
这两个a
,b
分配,然后返回obj.c
。对于字节流解码器,它实际上对我非常有用,因为我可以写:
我的问题是我在任何地方都没有看到这种语法,并且不想依赖于错误实现或处于提案阶段的东西。
javascript - 类构造函数中的 ES6 解构
这可能听起来很荒谬,但请容忍我。我想知道语言级别是否支持将对象解构为构造函数中的类属性,例如
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
:
但在我的笔记本电脑(Windows 7 x64)中,命令tsc --version
显示message TS6029: Version 1.6.2
: