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

javascript - 现代浏览器中的 TypeScript 支持

我刚刚阅读了一些与 TypeScript 相关的广告信息,除此之外,我对这个 JavaScript 超集没有经验。所以我有一些基本的问题:

  1. 现代浏览器对原生 TypeScript 的支持情况如何?

  2. 各大浏览器厂商对于未来原生支持 TypeScript 的立场是什么?

  3. TypeScript 和 ECMAScript6 之间有什么关系,TypeScript 提供的功能是否比 ECMAScript6 多得多?

随意回答所有或部分问题。

0 投票
9 回答
124757 浏览

javascript - 我什么时候应该在 ECMAScript 6 中使用箭头函数?

我们得到了两种非常相似的方式来在 ES6 中编写函数() => {}function () {}在其他语言中,lambda 函数通常通过匿名来区分自己,但在 ECMAScript 中,任何函数都可以是匿名的。这两种类型中的每一种都有唯一的使用域(即this需要显式绑定或显式不绑定时)。在这些域之间,有大量的情况可以使用任何一种表示法。

ES6 中的箭头函数至少有两个限制:

  • 创建时不要使用new,也不能使用prototype
  • this在初始化时固定绑定到范围

除了这两个限制之外,箭头函数理论上几乎可以在任何地方取代常规函数。在实践中使用它们的正确方法是什么?是否应该使用箭头函数,例如:

  • “它们工作的所有地方”,即在任何地方,函数都不必对this变量不可知,而且我们不是在创建对象。
  • 只有“需要它们的任何地方”,即需要绑定到某个范围的事件监听器、超时
  • 具有“短”功能,但不具有“长”功能
  • 仅适用于不包含另一个箭头函数的函数

我正在寻找在未来版本的 ECMAScript 中选择适当函数表示法的指南。该指南需要清晰,以便可以教授给团队中的开发人员,并且要保持一致,这样就不需要不断地从一个函数符号到另一个函数符号来回重构。

这个问题是针对那些在即将到来的 ECMAScript 6 (Harmony) 的上下文中考虑过代码风格并且已经使用过该语言的人。

0 投票
1 回答
3143 浏览

javascript - 使用 Promises 响应来自 Node.js 的请求

我正在尝试设置一个 Node.js 脚本来使用 ECMAScript 6 承诺。我能够在 Node 脚本中完成我需要的工作,这需要多次获取外部服务器(因此在时间上很昂贵),但无法响应客户端,因为 Promises 构造导致对响应的引用丢失(所以我猜)。

如何将 Response 对象传播到最后的 Promisesthen()并回复请求?

0 投票
0 回答
129 浏览

javascript - ECMAScript 6 到 ECMAScript 3 转译器?

作为从 ECMAScript 6 到 ECMAScript 5 的转译器,我熟悉 Google Traceur 项目(它被认为已准备好在关键系统中用于生产);不幸的是,我仍然必须支持仅兼容 ECMAScript 3 的 IE 8!

我很好奇是否有任何项目可以从 ECMAScript 6 转换到 ECMAScript 3,这样我就可以现在开始使用 ECMAScript 6 功能,然后在最终弃用 IE8 后切换到该代码库。

0 投票
2 回答
110 浏览

javascript - 我的 Promise 实现是否符合规范?

我正在尝试创建一个符合当前规范的 Typescript 承诺实现(实际上是一个 polyfill)(我使用了这些http://promises-aplus.github.io/promises-spec/)。

应该完成,代码在这里https://gist.github.com/ilmattodel93/dbefa9eb86715f76e10e,但我无法理解规范的 2.2.7 子点。只有种族和所有静态方法应该丢失。

请有人可以向我解释 2.2.7 的子点并告诉我是否正确实施了它们?

感谢您的关注和时间,马蒂亚。

0 投票
2 回答
2085 浏览

javascript - 星号在“function* ()”之类的函数定义中是什么意思?

我刚刚在其他一些 js 代码中找到了这种定义形式,星号到底是什么意思?谢谢

0 投票
11 回答
106317 浏览

javascript - 为什么我可以在javascript中更改常量对象

我知道 ES6 还没有标准化,但是目前很多浏览器都支持 constJS 中的关键字。

在规范中,它写道:

常量的值不能通过重新赋值来改变,也不能重新声明常量。因此,虽然可以在不初始化的情况下声明一个常量,但这样做是没有用的。

当我做这样的事情时:

我看到一切都很好,xxx仍然是。6yyy[]

但是如果我这样做yyy.push(6); yyy.push(1);了,我的常量数组已经改变了。现在它是[6, 1],顺便说一句,我仍然无法改变它yyy = 1;

我这是一个错误,还是我错过了什么?我在最新的 chrome 和 FF29 中尝试过

0 投票
1 回答
82 浏览

ecmascript-harmony - 在下面的 ES6 类中,为什么 goFast() 有效?

我正在尝试更多地了解 ES6,并在教程中看到了这门课。为什么前面goFast()没有关键字就可以工作?function这是类中函数的新简写,还是……?

0 投票
1 回答
192 浏览

javascript - EcmaScript 6 中 yield 的优先级

我有一个build同步返回对象的函数,该对象又包含一个函数run。此函数返回一个 thunk,因此可以使用yield库调用,例如co.

基本上,调用如下所示:

现在,问题是我想确保yield引用的是run,而不是build。我该如何做到这一点,而不像下面的代码片段那样引入临时变量?

有任何想法吗?

PS:我在 Node.js 0.11.x 上使用“--harmony”标志运行此代码。

0 投票
4 回答
10798 浏览

javascript - 对象的可配置属性和可写属性之间的区别

我看到以下关于 javascript、对象数据属性的内容

— 可配置:指定是否可以删除或更改属性。

— 可枚举:指定属性是否可以在 for/in 循环中返回。

— Writable:指定属性是否可以更改。

这里的“Configurable”和“Writable”代表的是相同的(属性是否可以改变),那我们为什么需要两个单独的属性呢?