问题标签 [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.
javascript - 迭代集合元素
我已经为实验性 ECMAscript 6 功能打开了 Chrome 标志,其中之一是Set
. 据我了解,Set
规范编写者已广泛同意 的细节。
我创建一个集合a
并添加字符串'Hello'
但是我如何迭代 的元素a
?
给出“语法错误:let
扩展模式外的非法声明”
给出“语法错误:意外的标识符”
给Undefined
是否可以迭代 Chrome 26 中的集合?
javascript - for 循环中的 let 关键字
ECMAScript 6let
应该提供块范围而不会让人头疼。有人可以解释为什么在下面的代码i
中函数解析为循环中的最后一个值(就像 with 一样var
)而不是当前迭代中的值?
根据在循环中使用的MDN,应该将变量绑定在循环体的范围内。当我在块内使用临时变量时,事情就像我期望的那样工作。为什么这是必要的?let
for
我用 Traceur 和node --harmony
.
javascript - ECMA 和谐 – 回调到生成器
首先——我们在这里处于无人涉足的领域,所以虽然它可以在最新的 Firefox 中运行,但在撰写本文时,MDN 上的文档还没有准备好。稍后我会修复 MDN(可能有很多地方需要修复),所以我会提供一个词汇表。
我想从回调创建一个迭代器:
我有一个使用两个回调作为参数构造的类。我们称这个实例为“监听器”。这个监听器然后用一些参数重复调用第一个回调,直到它完成监听,然后调用第二个回调一次。
我想围绕它包装一个迭代器,它会产生每个参数,侦听器调用第一个回调时使用,然后在调用第二个回调时立即抛出 StopIteration。
像这样:
请注意,我在 Addon SDK 插件中执行所有这些操作,因此我可以使用Promise和相关的东西。并且不需要关于浏览器如何不知道我正在尝试做什么的讲座;)
/edit:如果您问我为什么不将所有内容都转换为基于回调的代码,请尝试一下并告诉我如何将其转换为基于回调的代码而不流泪。我将把我的主要功能包装到这里提到的东西中。
javascript - 检查函数是否是生成器
我在 Nodejs v0.11.2 中使用了生成器,我想知道如何检查我的函数的参数是生成器函数。
我找到了这种方式typeof f === 'function' && Object.getPrototypeOf(f) !== Object.getPrototypeOf(Function)
,但我不确定这是否是好的(并且在未来工作)方式。
你对这个问题有什么看法?
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?
javascript - 生成器真的具有侵入性吗
据我了解 Javascript 生成器的当前规范,您必须yield
明确标记包含 s 的函数。
我想知道这背后的合理性是什么。
如果这是真的,它将迫使人们写:
这意味着,生成器会像癌症一样在代码库中传播。最后,对于开发人员来说,只产生和处理迭代器真的很有趣。
我会发现它更实用,只需定义我想要处理迭代的位置。
如果浏览器必须将yield
调用和生成器处理程序(firstfunc
, secondfunc
, thirdfunc
)之间的所有内容转换为Promise / Future形式,那应该自动工作,而不是 Javascript 开发人员的业务。
或者有没有很好的理由不这样做?
javascript - 什么是扩展模式?
我正在let
玩 Node v0.10.12。使用该--harmony
标志,以下代码会产生语法错误:
SyntaxError:扩展模式外的非法 let 声明
但是,如果我也使用该--use-strict
标志,那么代码将按预期运行。
为什么只使用--harmony
标志时会引发语法错误?什么是扩展模式?与严格模式有什么关系?
javascript - Node.JS 中的 ECMAScript 6 模块
Node.JS v0.11.3 声称支持带有标志的 ECMAScript 6 模块--harmony_modules
。
我尝试了各种示例,例如以下示例。
让模块在 Node.JS 中工作的语法是什么?
javascript - for 循环是否隐式创建一个块?
我正在使用let
Node.JS(需要标志--harmony
和--use-strict
)。据我了解,该let
语句允许块范围的声明。考虑以下:
涉及多少块作用域?i
居住在哪个块范围内?我是否正确地认为,为了使这个示例起作用,涉及三个块作用域,其中一个作用域由for
循环隐式创建,如下所示?