问题标签 [ecmascript-3]

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 投票
1 回答
81 浏览

javascript - 由表达式文字制作的正则表达式是否共享一个实例?

下面的代码片段(来自 Crockford 的Javascript: The Good Parts)演示了由正则表达式字面量生成的 RegExp 对象共享一个实例:

问题:这与任何其他文字一样吗?我尝试修改上面的代码以使用 string "string",但出现了一堆错误。

0 投票
1 回答
438 浏览

javascript - TSC:--target ES3 兼容性标志有什么作用?

我安装了 typescript npm 包:

跑了

哪里doodle.ts有:

它在 output 中回显了相同的内容doodle.js

如何在输出中配置它,我得到:

标志不-t ES3应该照顾这些兼容性方面吗?

0 投票
3 回答
1693 浏览

javascript - arguments.slice() 应该在 ES5 中工作吗?

我正在观看Crockford on Javascript - Act III: Function the Ultimate大约 41 分 26 秒。他屏幕上的代码使用arguments.slice()方式对我来说会导致错误

他是这样解释的:

我将首先得到一个参数数组,除了第一个,因为第一个是一个函数,我不需要那个。在这种情况下,我假设我在 ES5 上,所以我没有做可怕的 Array.prototype.apply()把戏。

问题是运行arguments.slice()会导致这个错误:

Uncaught TypeError: arguments.slice is not a function

我正在测试肯定有 ES5 的现代浏览器!我可以让代码工作的唯一方法是如果我使用一些“可怕的”技巧,(正如他所说的那样)例如Array.prototype.slice.apply(arguments, [1])[].slice.call(arguments, 1);.

他只是误会了吗?他的幻灯片有错字吗?为什么arguments.slice()在我的 ES5 浏览器中不起作用?

0 投票
1 回答
430 浏览

javascript - Object.defineProperty 错误

我必须找到一个等效的代码:

因为我正在使用不支持 ECMA Javascript5 的旧 js 解释器,所以我试图切换到这段代码:

但它不起作用。PS:我的 vValue 是: vValue

0 投票
2 回答
1555 浏览

javascript - 在 ES5 之前有没有办法在没有原型的情况下创建对象?

在 ES5 之前有没有办法在没有原型的情况下创建对象?

即类似Object.create(null)(ES5)

我认为这样的事情可能会奏效,但最终语句意外返回true

Object.getPrototypeOf是ES5。我在这里用它来展示。

0 投票
3 回答
1511 浏览

javascript - 多重依赖承诺链

我正在尝试实现以下用例:

  1. 我有一系列同步任务
  2. 每个同步任务都需要触发一个异步任务
  3. 异步任务不能同时运行,因此每个任务都等待其触发器 (2) 和其前任的完成。

在此处输入图像描述

我的第一个想法是将每个任务(同步和异步)转换为一个承诺,然后创建两个承诺链。但是我正在努力寻找一种方法来实现具有双重依赖的异步任务链。

我怎样才能做到这一点?

0 投票
2 回答
2035 浏览

visual-studio - 使用 TypeScript 定位不同的 Javascript 版本

TypeScript 可以全局定位不同版本的 Javascript - 你可以在转译 ES3、ES5 或 ES6 之间切换。

我们必须支持 IE,所以 ES3 是我们的最低公分母。

然而,优秀的浏览器(如 Chrome)已经支持 ES6,并且能够通过优化运行明显更小的 ES6 代码。

因此,我想从同一个 TypeScript 源中将 ES3 提供给 IE,将 ES6 提供给 Chrome。

  • 有没有办法让 TypeScript 转译多个 JS 文件(可能是*.es3*.es6或类似的东西),以便我们可以选择要服务的版本?(理想情况下在 VS 2015 中)

  • 或者在 C# 中,我可以访问 TypeScript 转译器以在运行时完成该步骤吗?

0 投票
1 回答
91 浏览

lua - 是否有将 Lua 标签转换为 ECMAScript3 的解决方案?

我正在重新构建一个 Lua 到 ES3 的转译器(一个将 Lua 转换为跨浏览器 JavaScript 的工具)。在我开始将我的想法花在这个转译器上之前,我想问一下是否可以将 Lua 标签转换为 ECMAScript 3。例如:

我的第一个想法是将每个语句体分成几部分,例如,当有标签时,它的下一个语句必须作为整个下一部分存储:

等等。每个具有主体(或程序块)的语句都会获得这样的部分列表。标签的每个部分都应将其名称存储在某个地方(例如,在其自己的部分对象中,在属性内)。

每个部分都将是一个函数,或者将在其自身上存储一个函数,以便相对于其他部分按顺序执行。

goto 语句将查找其特定标签以运行其语句并调用 ES return 语句以停止当前语句的执行。

以这种方式分离正文语句的局限性在于访问不同部分中定义的变量和函数......那么,有没有一个想法或答案?如果将它们转换为 ECMAScript,就不可能有稳定的标签吗?

0 投票
1 回答
561 浏览

javascript - Javascript中的常量模式

javascript在发布之前如何实现常量ES5

据我所知,没有get/set东西,没有writable财产,没有const文字,没有Object.freeze东西,我怎么能让自己的不变,不能改变?

比如,例如,Math.PI

在此处输入图像描述

0 投票
2 回答
673 浏览

javascript - 为什么在 ES5 中将变量对象更改为词法环境?

ES5 将变量对象(VO) 更改为词法环境。既然 VO 作为感知已经非常明显,那么这种变化的动机是什么?