ECMAScript 3 在主要浏览器中的实现仍然存在差异吗?

2023-11-23

有人可以指出 ECMAScript 第三版在当今浏览器中的实现差异吗? (Chrome、Safari、IE8、FF)

使用 ECMAScript 3 标准(而不是 FF 和 IE 对 JScript 和 JavaScript 的扩展)时我们安全吗?


嗯,当然存在实现错误,我必须处理的最严重的是 JScript(该标准的 Microsoft 实现),例如:

FunctionExpressions 的标识符只能在函数本身的内部范围内访问:

(function foo() {
  alert(typeof foo); // "function"
})();

alert(typeof foo);  // should be "undefined", on IE shows "function"

该错误存在于所有当前 IE 版本中,刚刚在 IE9 预览版上修复。

实际上更糟糕的是,它创建了两个函数对象,例如:

var foo = function bar() {};

if (typeof bar != 'undefined') { // the case of IE
  alert(foo === bar); // false!!!
}

另一个众所周知的 JScript 错误是“不要枚举错误”,如果其作用域链中的对象包含不可枚举的属性(具有{ DontEnum }属性),如果该属性在其他对象上被隐藏,它将保持不可枚举状态,例如:

var dontEnumBug = {toString:'foo'}.propertyIsEnumerable('toString');

它将评估为false在 IE 上,这会导致使用时出现问题for-in语句,因为属性不会被访问。

JScript 是问题最多的实现——尽管 IE9 实现确实变得更好了——。

推荐文章:

  • JScript deviations from ES3pdf
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ECMAScript 3 在主要浏览器中的实现仍然存在差异吗? 的相关文章

随机推荐

  • CSS文本装饰下划线颜色[重复]

    这个问题在这里已经有答案了 可能的重复 更改下划线颜色 是否可以仅更改文本下的线条颜色 我希望看到类似红色字母 下面有一条蓝线的东西 但我不知道如何完成此操作 对于谷歌同事 复制自重复的问题 这个答案已经过时了文字装饰颜色现在大多数现代浏览
  • Android O - 旧的启动前台服务仍然有效?

    因此 对于 Android O 如果您希望每小时接收的不仅仅是几次位置更新 您需要将服务作为前台服务运行 我注意到启动前台服务的旧方法似乎确实适用于 O IE startForeground NOTIFICATION ID getNotif
  • C++ 中接受“任何内容”的模板

    我有一个简单的模板结构 将字符串与值关联起来 template
  • 调用不存在的端点时收到 403 而不是 404

    这是 Spring Security 配置的典型部分 Override protected void configure HttpSecurity http throws Exception http csrf and cors disab
  • Apache HttpClient 和 PEM 证书文件

    我想以编程方式访问需要客户端证书的网站 该证书位于 PEM 文件中 在此应用程序中 我不想将它们添加到我的密钥库中 如果可以避免的话 请使用 keytool 或 openssl 我需要直接在代码中处理它们 HttpClient httpcl
  • 弹出窗口在关闭时将数据返回给父级

    我使用打开了一个弹出窗口window open 我现在想要的是用户能够单击这个新窗口中的两个链接之一 允许 或 不允许 当用户单击这些链接之一时 弹出 窗口应该关闭 并返回 允许 或 不允许 或类似的内容 true false就可以了 到父
  • 在 Inno Setup 脚本上安装 MySQL 并加载数据库

    我在 Stack Overflow 上读了很多文档 你们太棒了 我采用了另一篇文章中建议的一些代码 帮助很大 感谢 RobeN 我能够加载并启动 MySQL 不过 我确实阅读了建议将数据库自动加载到序列中的文档 我似乎无法弄清楚 任何帮助都
  • document.all 和 document.layers 现在已过时

    我正在使用一些 旧的 本机 javascript 并且遇到了 document getElementById document all 和 document layers 的分离 据我所知 document all 和 document l
  • Android 多个同步适配器项目(例如 Google 帐户)?

    我目前已将 Android 应用程序设置为使用 Android 的 AccountManager 功能 使用 SyncAdapter 和经过身份验证的帐户自动执行同步 我只运行 1 个同步适配器 用于同步所有内容 但我想将其分开 以便以不同
  • scala 中的 MinMax 归一化

    我有一个包含多列的 org apache spark sql DataFrame 我想使用 MinMax 归一化或任何技术来缩放 1 列 lat long dist 以在 1 和 1 之间缩放数据并将数据类型保留为 org apache s
  • 不明确的 if 和 else 分支:行为是否已定义?

    我最近遇到了一些 C 代码 如下所示 if test 1 if test 2 Do stuff else exit 0 这是不明确的 因为编译器可以将其视为 if test 1 if test 2 else or as if test 1
  • 查找数组中元素的最大总和的算法,使得相邻元素不超过 k 个

    我遇到了这个问题 给定一个仅包含正值的数组 您希望在没有超过 k 个选定元素的组是相邻的约束下最大化选定元素的总和 例如 如果输入为 1 2 3 1 7 9 n 6 且 k 2 输出将为 21 来自选择元素 2 3 7 9 我的简单 DP
  • 执行大查询时内存不足?

    我在尝试进行大查询时收到此错误 java lang OutOfMemoryError Java heap space 我搜索过并发现申请设置自动提交 假 and 设置获取大小我准备好的语句的方法可能有助于处理大查询 然而 当我使用它时 我收
  • 将长sql vba语句分成多行

    我对 VBA 环境完全陌生 我试图将这一行分成多行 但失败了 有人可以帮我把这段代码分成多行吗 DoCmd RunSQL UPDATE INDIVIDUAL SET INDIVIDUAL INDI FIRSTNAME prospect co
  • Ruby 在 Windows 上崩溃

    我面临着这里描述的同样的问题 为什么 ruby exe 遇到了问题并且需要关闭 rails 失败 那是 ruby 崩溃并出现以下错误 ruby exe has encountered a problem and needs to close
  • 不是有效 python 标识符的属性

    通常的属性访问方法要求属性名称是有效的 python 标识符 但属性不必是有效的 python 标识符 gt gt gt class Thing def init self setattr self 0potato 123 gt gt gt
  • 更改表并添加 UNIQUE 键会导致错误

    我有一张桌子叫Animal AnimalId是主键 我想设置该列AnimalType id作为独特的 我有一个AnimalType表并需要在此处设置外键 ALTER TABLE Animal ADD UNIQUE Animal Animal
  • 在 WebAPI 方法中返回 HTTP 403

    我如何返回HTTP 403 from a WebAPI方法 我试过扔一个HttpResponseException with HttpStatusCode Forbidden 我已经尝试过 return request CreateErro
  • 使用奥格登引理与常规泵引理进行上下文无关语法

    我正在学习问题中引理之间的区别 我能找到的每个参考文献都使用以下示例 a i b j c k d l i 0 or j k l 以显示两者之间的差异 我可以找到一个使用常规引理来 反驳 它的例子 选择 w uvxyz s t 维 gt 0
  • ECMAScript 3 在主要浏览器中的实现仍然存在差异吗?

    有人可以指出 ECMAScript 第三版在当今浏览器中的实现差异吗 Chrome Safari IE8 FF 使用 ECMAScript 3 标准 而不是 FF 和 IE 对 JScript 和 JavaScript 的扩展 时我们安全吗