问题标签 [ecmascript-6]

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 投票
3 回答
6179 浏览

javascript - 生成器函数中的委托收益(收益星号,收益 *)

ECMAScript 6 应该带来生成器函数和迭代器。生成器函数(具有function*语法)返回一个迭代器。迭代器有一个next方法,当被重复调用时,它会执行生成器函数的主体,在每个yield操作符处重复暂停和恢复执行。

生成器上的ECMAScript 6 wiki还引入了“委托收益”yield*运算符,如下所示:

yield*操作员委托给另一个生成器。这为组成生成器提供了一种方便的机制。

“委托给另一个生成器”是什么意思?我该如何使用yield*“方便地编写生成器”?

[您可以使用标志在 Node v0.11.3 中使用生成器--harmony-generators。]

0 投票
4 回答
3984 浏览

javascript - 使用 while 循环而不是 for 循环进行迭代

ECMAScript 6 为迭代引入了生成器、迭代器和语法糖。带有标志的 Node.JS v0.11.4

--harmony --use_strict --harmony_generators

了解以下生成器

然后我可以打印小于 1000 的斐波那契数。

对于这个例子,while循环而不是for循环会更自然,类似于

迭代器的迭代可以用while循环而不是循环来完成for吗?

0 投票
4 回答
6206 浏览

javascript - 如何用数组构造集合

我正在玩SetNode.JS v0.11.3 和--harmonyflag。API 工作正常,我可以add, remove,clear等。但是我无法用数组初始化一个集合。我已经尝试过(根据MDN 页面的提示)

如何将数组转换为集合?MDN过时了吗?Node.JS 是否根本没有实现该功能?

0 投票
1 回答
330 浏览

javascript - 符号是如何工作的?

Node.JS v0.11.3 声称支持带有--harmony_symbols标志的 ECMAScript 6 符号(参见此处)。最新草案

属性使用键值标识。键值是 ECMAScript 字符串值或符号值。

我尝试了以下示例

但我在最后一行得到一个错误

TypeError:从符号到字符串的转换

符号是如何工作的?我的示例是错误的,还是 Node.JS 实际上支持符号?

0 投票
1 回答
301 浏览

javascript - 恢复属性键/值

我正在使用带有标志的 Node.JS v0.11.4 中的 ECMAScript 6 符号和地图--harmony。考虑以下。

'Noise'如果该属性由一个“匿名”符号键标识,并且保证是唯一的,那么是否可以检索该值?

0 投票
1 回答
227 浏览

javascript - 如何显示一个对象已准备好进行垃圾回收?

ECMAScript 6 引入了弱映射,在 Node.JS v0.11.3 中使用 flag 实现--harmony

考虑以下代码。

执行最后一行时,该字符串'Save me!'已准备好进行垃圾回收。是否可以用代码证明该字符串不再具有从当前范围指向它的强引用链?

我知道弱地图没有迭代或size类似于地图的属性。这是否意味着无法后验地知道给定对象不再可以从弱映射中访问?

0 投票
4 回答
4083 浏览

javascript - 了解弱地图

ECMAScript 6 引入了弱映射,可在带有标志的 Node.JS v0.11.3 中使用--harmony。考虑以下。

我的印象是,对于weak map,从键到值的引用是的,所以如果对值的唯一引用是键,那么就不能再访问值了。

那么为什么该值'fish cans'仍然可以访问而不是垃圾收集呢?该变量rubbish不再引用它,并且来自keyto的引用'fish cans'的,即从垃圾收集器的角度来看不存在。我错过了什么?

0 投票
2 回答
91 浏览

javascript - How is a block used only for scoping called?

JavaScript has many types of block, such as while blocks, if blocks , for blocks. ES6 introduces block scoping, so "purely semantic", "anonymous" blocks make sense:

What is the above type of block (used only for scoping) called?

0 投票
3 回答
174 浏览

javascript - 如何为语言变化做准备?

我正在努力学习 JavaScript 的来龙去脉,最近发现 ECMAScript 6 即将推出——学习即将改变并即将退出的东西似乎越来越琐碎。我不知道当新版本出来时是否值得深入研究 ECMAScript5 的复杂细节。作为 ECMAScript 6 的程序员,我应该如何为自己做好准备?更一般地说,我应该如何为不断发展的语言做准备?

0 投票
3 回答
2191 浏览

javascript - JavaScript 符号类型:(非字符串对象键)

本 ECMAScript 6 草案规范中提到的“符号”javascript 类型是什么?

引用规范:

Symbol 类型是可用作 Object 属性键的所有非字符串值的集合。

每个可能的符号值都是唯一且不可变的。

符号值有一个名为 [[Private]] 的可观察属性,其不可变值为真或假。私有符号是一个符号值,其 [[Private]] 属性的值为真。

我认为对象键只是字符串,而且我并不孤单。引用这个接受的 SO 答案

…对象键总是字符串…</p>

你能解释一下符号类型是什么,并演示它的用法吗?我试图理解规范。

谢谢!