簡體   English   中英

在主流瀏覽器中是否還存在ECMAScript 3實現差異?

[英]Are there still ECMAScript 3 implementation differences in major browsers?

有人能指出在今天的瀏覽器中ECMAScript第3版的實施差異嗎? (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 Previews上得到修復。

實際上更糟糕的是,它創建了兩個函數對象,例如:

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實現變得越來越好 - 。

推薦文章:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM