问题标签 [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 投票
11 回答
85371 浏览

javascript - 迭代集合元素

我已经为实验性 ECMAscript 6 功能打开了 Chrome 标志,其中之一是Set. 据我了解,Set规范编写者已广泛同意 的细节。

我创建一个集合a并添加字符串'Hello'

但是我如何迭代 的元素a

给出“语法错误:let扩展模式外的非法声明”

给出“语法错误:意外的标识符”

Undefined

是否可以迭代 Chrome 26 中的集合?

0 投票
3 回答
42201 浏览

javascript - for 循环中的 let 关键字

ECMAScript 6let应该提供块范围而不会让人头疼。有人可以解释为什么在下面的代码i中函数解析为循环中的最后一个值(就像 with 一样var)而不是当前迭代中的值?

根据在循环中使用的MDN,应该将变量绑定在循环体的范围内。当我在块内使用临时变量时,事情就像我期望的那样工作。为什么这是必要的?letfor

我用 Traceur 和node --harmony.

0 投票
1 回答
215 浏览

javascript - ECMA 和谐 – 回调到生成器

首先——我们在这里处于无人涉足的领域,所以虽然它可以在最新的 Firefox 中运行,但在撰写本文时,MDN 上的文档还没有准备好。稍后我会修复 MDN(可能有很多地方需要修复),所以我会提供一个词汇表

我想从回调创建一个迭代器:

我有一个使用两个回调作为参数构造的类。我们称这个实例为“监听器”。这个监听器然后用一些参数重复调用第一个回调,直到它完成监听,然后调用第二个回调一次。

我想围绕它包装一个迭代器,它会产生每个参数,侦听器调用第一个回调时使用,然后在调用第二个回调时立即抛出 StopIteration。

像这样:

请注意,我在 Addon SDK 插件中执行所有这些操作,因此我可以使用Promise和相关的东西。并且不需要关于浏览器如何不知道我正在尝试做什么的讲座;)

/edit:如果您问我为什么不将所有内容都转换为基于回调的代码,请尝试一下并告诉我如何将其转换为基于回调的代码而不流泪。我将把我的主要功能包装到这里提到的东西中。

0 投票
12 回答
14895 浏览

javascript - 检查函数是否是生成器

我在 Nodejs v0.11.2 中使用了生成器,我想知道如何检查我的函数的参数是生成器函数。

我找到了这种方式typeof f === 'function' && Object.getPrototypeOf(f) !== Object.getPrototypeOf(Function),但我不确定这是否是好的(并且在未来工作)方式。

你对这个问题有什么看法?

0 投票
1 回答
3581 浏览

javascript - Returning a value without an explicit return statement

In JavaScript, falling off the end of a function returns undefined; if you want to return a value, you need to use an explicit return statement.

At least this was hitherto the case, but it looks like ECMAScript 6 will at least sometimes allow the return to be omitted.

In what circumstances will this be the case? Will it be related to the distinction between function and => or is there some other criterion?

0 投票
1 回答
143 浏览

javascript - 生成器真的具有侵入性吗

据我了解 Javascript 生成器的当前规范,您必须yield明确标记包含 s 的函数。

我想知道这背后的合理性是什么。

如果这是真的,它将迫使人们写:

这意味着,生成器会像癌症一样在代码库中传播。最后,对于开发人员来说,只产生和处理迭代器真的很有趣。

我会发现它更实用,只需定义我想要处理迭代的位置。

如果浏览器必须将yield调用和生成器处理程序(firstfunc, secondfunc, thirdfunc)之间的所有内容转换为Promise / Future形式,那应该自动工作,而不是 Javascript 开发人员的业务。

或者有没有很好的理由不这样做?

0 投票
2 回答
4938 浏览

javascript - 什么是扩展模式?

我正在let玩 Node v0.10.12。使用该--harmony标志,以下代码会产生语法错误:

SyntaxError:扩展模式外的非法 let 声明

但是,如果我也使用该--use-strict标志,那么代码将按预期运行。

为什么只使用--harmony标志时会引发语法错误?什么是扩展模式?与严格模式有什么关系?

0 投票
2 回答
7351 浏览

javascript - Node.JS 中的 ECMAScript 6 模块

Node.JS v0.11.3 声称支持带有标志的 ECMAScript 6 模块--harmony_modules

我尝试了各种示例,例如以下示例。

让模块在 Node.JS 中工作的语法是什么?

0 投票
1 回答
151 浏览

javascript - for 循环是否隐式创建一个块?

我正在使用letNode.JS(需要标志--harmony--use-strict)。据我了解,该let语句允许块范围的声明。考虑以下:

涉及多少块作用域?i居住在哪个块范围内?我是否正确地认为,为了使这个示例起作用,涉及三个块作用域,其中一个作用域由for循环隐式创建,如下所示?

0 投票
3 回答
42493 浏览

javascript - Node.JS 中的解构

这个最近的视频声称 EMCAScript 6 解构已经在 Node.JS 中部分实现。我尝试了各种示例(使用 v0.10.12 和--harmony标志),例如

无济于事。这张票似乎表明 V8 尚不支持解构。

解构真的在 Node.JS 中部分实现了吗?我可以使用哪些代码片段?