问题标签 [ecmascript-5]

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 投票
3 回答
6995 浏览

javascript - 为什么不将八进制文字作为字符串转换为数字?

在 JavaScript 中,为什么将八进制数字符串转换为十进制数?Number()我可以使用or转换十六进制文字字符串+,为什么不能使用八进制?

例如:

我知道我可以用 解析parseInt("0100" [, 8]),但我想知道为什么转换不像 hex 和 dec 数字那样工作。

另外,有谁知道为什么在严格模式下从 ECMAScript 第 5 版中删除八进制文字?

0 投票
4 回答
3362 浏览

javascript - 新的 ECMAScript 5 函数有哪些现代化脚本?

ECMAScript 5 有很多不错的补充。John Resig 在这里有一个很好的概述。这是一个很好的ECMAScript 5 兼容性表

对于尚不支持这些功能的浏览器,很多这些东西可能是“伪造的”。你知道任何可以做到这一点的脚本吗?我对 Object.create 特别感兴趣。

例如,Douglas Crockford 的 JSON 脚本会在创建 JSON 函数之前检查它们是否存在。

如果有更多类似 JSON 的,我们可以在需要使用新函数时包含它们。

0 投票
8 回答
10026 浏览

javascript - 如何使用 ECMAScript 5 定义默认的 getter 和 setter?

如何为原型指定默认 getter?对于默认 getter,我的意思是调用 if 的函数obj.undefinedProperty123

我试过 Object.prototype.get = function(property) {..} 但在这种情况下不会调用它。

0 投票
3 回答
6017 浏览

javascript - ES5 中的 Object.defineProperty?

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

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

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 投票
3 回答
11594 浏览

javascript - Javascript ES5 的现状如何?

哪些浏览器/引擎已经支持 ES5 [严格]?

0 投票
2 回答
4063 浏览

javascript - 为什么这在严格模式下是非法的?

是的,是的,我知道,严格模式还没有出现,但实际上,我正在为未来做计划......

那么,为什么会这样:

...在 ES5 严格模式下不允许?

还是我误解了?JSLint:

能不能再详细一点,我想知道...?

编辑:

为避免混淆,这里有更多的原始代码:

0 投票
5 回答
8507 浏览

javascript - 如何强制谷歌闭包编译器保持“使用严格”;在编译的js代码中?

如果您使用的是模块模式并且有这样的东西:

并使用 Google Closure Compiler 编译代码,该"use strict";指令不会将其放入编译文件中。

那么如何防止 Closure Compiler 移除 ES5/strict 指令呢?

(请注意,我不想使用强制 ES5/strict 模式的其他模式,即简单地将“use strict”添加到编译文件的第一行。我想使用这里描述的模块模式.)

0 投票
1 回答
627 浏览

javascript - hasOwnProperty 和 ECMAScript 5 严格模式

我很好奇:任何人都知道为什么 ECMAScript5 规范没有在严格模式下更加收紧预定义对象原型的属性吗?例如,似乎没有关于 hasOwnProperty 定义方式的信息。我已经尝试重新定义它(并在 FF4 beta 中测试了代码)并且我能够侥幸逃脱。如果我没有做错任何事情,那么这意味着任何人仍然可以重新定义 Object.prototype.hasOwnProperty 属性,并真正搞砸所有依赖它来工作属性的代码......

对此有何想法?

编辑:在我深入研究规范时提供更多信息......

正如我在下面的评论中所说,由于应用于它的元数据(可写、可枚举和可配置都设置为 false)和 FF 4 beta(我'm 用来运行我的测试)确实会产生异常。

谢谢。

0 投票
3 回答
1571 浏览

javascript - JavaScript (ECMAScript5) 严格模式是否提供了显着的性能优势以值得广泛使用?

我正在阅读一些关于使用 JavaScript 的严格模式的内容,一般来说,这个想法似乎是将一组更严格的规则强加给编码器,以确保 JS 引擎可以更好地优化代码。它几乎感觉就像是 Visual Basic 中“Option Explicit”的 JavaScript 等价物。

如果这基本上是将严格模式应用于我的代码的净效果,那么性能差异是否值得出于习惯而不是逐案应用?除了代码稳定性之外,还有其他值得考虑的优势吗?

我希望将严格模式应用于我的脚本的一些关键原因是什么?