gpt4 book ai didi

javascript - 主要浏览器中是否仍然存在 ECMAScript 3 实现差异?

转载 作者:数据小太阳 更新时间:2023-10-29 04:39:25 24 4
gpt4 key购买 nike

有人可以指出当今浏览器中 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 Bug" ,如果其范围链中的对象包含不可枚举的属性(具有 { DontEnum } 属性),如果该属性隐藏在其他对象上,它将保持不可枚举,例如:

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

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

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

推荐文章:

关于javascript - 主要浏览器中是否仍然存在 ECMAScript 3 实现差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3679233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com