问题标签 [ecma262]

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 回答
971 浏览

javascript - 为什么 ECMAScript 仍然不是 W3C 的推荐?

理论上,浏览器可以支持多种编程语言来编写网页的客户端脚本。实际上,ECMAScript 是唯一一种在所有浏览器中广泛实现和使用的脚本。所以对于大多数人来说,它是网络不可或缺的一部分。

然而,它从未被 W3C 推荐为网页脚本的推荐。HTML5 似乎也促进了它,尽管客户端交互性变得越来越重要。为什么会这样?

  • 是为了防止网络平台上的编程语言垄断吗?(显然失败了)
  • 是因为 W3C 更喜欢只关注 Web 的声明性方面吗?
  • 或者仅仅是一种政治立场?
0 投票
2 回答
8024 浏览

javascript - JavaScript 语法中有效的左侧表达式是什么?

好的,我们都知道有效的左侧表达式是什么。有点儿。*

但是,看看ECMA-Script standard的定义,我很困惑:

这只是定义中的错误,还是我在这里弄错了?我的意思是,这实际上不意味着

应该是有效的赋值表达式?


*根据我的谦虚理解,这将更有意义:

0 投票
3 回答
6017 浏览

javascript - ES5 中的 Object.defineProperty?

我正在看到有关使枚举可配置的“新” Object.create 的帖子。但是,它依赖于 Object.defineProperty 方法。我找不到此方法的跨浏览器实现。

我们是否坚持为旧的 Object.create 编写代码?我不能写在 IE6/7 中不起作用的东西。

0 投票
2 回答
196 浏览

javascript - ECMAScript 中函数对象表达式的优先级

为了实现一个发出 ECMAScript 的微型编译器,我需要知道函数对象表达式绑定的强度,即“运算符”的优先级是什么 function(a1, a2, ...) { ... }

例如, function(a1, a2, ...) { ... } (b1, b2, ...) 应该如何解析?为了得到想要的结果,即将 b1, b2, ... 应用于函数对象,我必须在 Rhino 解释器中使用括号括住函数对象。

0 投票
4 回答
1260 浏览

javascript - ECMA-/Javascripts Array.prototype.forEach

Javascript (ECMAscript)Array.prototype.forEach从版本 1.6 (ECMAscript edition 3, 2005) 开始支持该方法。因此,相当多的浏览器已经支持该方法,并且与 jQuery 的$.each()方法相比,它的速度非常快。
(实际上它击败了所有的实现,不管是哪个 Javascript 库)

与 jQuery 相比,它的速度大约快 60-70%。在 JSPerf上的forEach 与 jQuery上自己尝试一下。

到目前为止,我使用它的唯一缺点是,我无法想办法尽早中断迭代。Like for, whileand do-whilehave a breakstatement, jQuerys.each()支持return false打破循环。

我查看了ECMAScript 第 5 版规范(我发现的最新版本),但他们没有提到该循环的早期中断。

那么,问题来了,道格拉斯·克罗克福德先生会称其为design error吗?
我是否遗漏了什么并且有可能提前打破这样的循环?

编辑

感谢您到目前为止的答案。我想既然没有人想出一个“本机”解决方案,那真的没有实现(也许是一个特性?)。无论如何,我不太喜欢建议的方法,所以我胡闹了一下,终于找到了我喜欢的方法(至少,更好)。好像:

这是“真正的”生产代码。我寻找了一种查找 css3 转换属性的好方法,但我迷失在 ecma5 规范和奇怪的 Javascript 论坛中:-)

因此,您可以将数组对象本身作为第三个参数传递给.forEach回调。我从原始数组创建一个副本,一旦找到我要查找的内容,就会调用slice(0)并将其属性设置为 0。.length效果很好。

如果有人提出更好的解决方案,我当然会编辑它。

0 投票
2 回答
2076 浏览

javascript - 如何确保 ES3 程序将在 ES5 引擎中运行?

所以 ECMAScript 5 引入了一些与 ECMAScript 3 不兼容的地方。


示例

已经写了很多文章,说明在 ES5 严格模式下this === null || this === undefined是可能的:

但是,该标准 真正建议的是 ES5 引擎也允许在非严格模式下这样做:

15.3.4.3 ... thisArg 值未经修改作为this值传递。这是对第 3 版的更改,其中 aundefinednullthisArg 被替换为全局对象,而 ToObject 应用于所有其他值,并且该结果作为this值传递。

目前,IE9 是唯一真正以这种方式实现 ES5 的浏览器,事实证明这可能会破坏当前的脚本。伟大的。


ES5 规范的 Annix E列出了许多其他不兼容性。

那么,确保我们久经考验的 ES3 脚本能够继续完美运行的最佳方法是什么?某种自动化测试套件?我们必须手动测试吗?

0 投票
1 回答
1797 浏览

javascript - 为什么`typeof this`返回“object”?

我在 Chrome、Firefox 和 Safari 中看到了相同的结果,所以我认为它符合规范,但是......为什么?这在规范中是在哪里定义的?为什么不用于功能?

0 投票
3 回答
22461 浏览

javascript - Javascript类型的最大大小?

调查 javascript 类型我试图找出某些数据类型的最大存储大小是多少。例如,我设置了一个快速递归算法来增加 var 大小,直到浏览器崩溃,对于我现有版本的 chrome 上的字符串,它最终接近 128mb(或者可能是 256)。

我一直在以痛苦的方式这样做,因为我找不到任何关于此的规范,但是不断的浏览器崩溃使这是一个痛苦的试验(由于某种原因,try catch 似乎对这个特定问题毫无用处)。

我也在寻找有关其他类型的最大存储大小的信息(数组、对象、函数、字符串、数字、布尔值......)

EMCA-262 第 8.4 节对此含糊其辞

字符串的长度是其中元素的数量(即 16 位值)。空字符串的长度为零,因此不包含任何元素。

...所以也许这是需要确定为在浏览器中实现的东西?

然而,ECMA 确实告诉我们有关数字的信息,例如,

Number 类型正好有 18437736874454810627(即 2^64−2^53+3)个值,代表二进制浮点算术的 IEEE 标准中指定的双精度 64 位格式 IEEE 754 值,除了IEEE 标准的 9007199254740990(即 2^53−2)个不同的“非数字”值在 ECMAScript 中表示为单个特殊的 NaN 值。

但后来我看不到任何关于物体的东西。

我可以期待在浏览器中使用什么?是否有任何代码库可以帮助管理非常大的对象和字符串?

我可以在单个脚本中分配多少内存?

0 投票
9 回答
12362 浏览

javascript - ECMAScript 真的是 Lisp 的方言吗?

我的一个朋友提请我注意第四届欧洲 Lisp 研讨会的欢迎词:

... 任何 Lisp 方言的实现和应用,包括 Common Lisp、Scheme、Emacs Lisp、AutoLisp、ISLISP、Dylan、Clojure、ACL2、ECMAScript ......

然后问ECMAScript是否真的是Lisp的方言。真的可以这么认为吗?为什么?

是否有一套定义明确且明确的标准来帮助我们检测一种语言是否是 Lisp 的方言?或者是一种非常松散的方言(在这种情况下,我们可以将 Python、Perl、Haskell 等添加到 Lisp 方言列表中吗?)

0 投票
3 回答
5053 浏览

javascript - JavaScript 中的间接函数调用

有类似的东西

但是还有这个

在这种情况下,“1”似乎没有多大意义,以下工作正常:

您能否指出描述该语法的 ECMAScript 的特定部分?