在主流浏览器中是否还存在ECMAScript 3实现差异?

Alf*_*TeK 7 javascript cross-browser

有人能指出在今天的浏览器中ECMAScript第3版的实施差异吗?(Chrome,Safari,IE8,FF)

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

CMS*_*CMS 8

好吧,当然还有实现错误,我必须处理的最严重的问题是JScript,即标准的Microsoft实现,例如:

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

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

alert(typeof foo);  // should be "undefined", on IE shows "function"
Run Code Online (Sandbox Code Playgroud)

该错误出现在所有当前的IE版本上,它刚刚在IE9 Previews上得到修复.

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

var foo = function bar() {};

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

另一个众所周知的JScript错误是"DontEnum Bug",如果其作用域链中的对象包含不可枚举的{ DontEnum }属性(具有该属性),如果该属性在其他对象上被遮蔽,则它将保持为不可枚举,例:

var dontEnumBug = {toString:'foo'}.propertyIsEnumerable('toString');
Run Code Online (Sandbox Code Playgroud)

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

JScript是具有最多问题的实现 - 尽管IE9实现变得越来越好 - .

推荐文章: