2010-09-09 43 views

回答

8

嗯,當然,也有執行漏洞,其中最嚴重的是,我不得不處理都在JScript中,微軟執行標準,例如:

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'); 

它將評估到false上IE,全光照時這會導致問題g for-in聲明,因爲屬性將不會被訪問。

JScript是具有最多問題的實現 - 儘管IE9的實現方式變得更好了。

推薦文章:

+1

http://stackoverflow.com/questions/3663775/object-name-same-a-function-name/你問題的答案問題會對此做出很好的補充。至少FunctionStatement部分。 – 2010-09-09 18:26:37

+0

不錯的例子。如果你(或其他人)有更多的文章突出ecmascript 3實施差異瀏覽器發送給他們:) – AlfaTeK 2010-09-09 22:57:38

相關問題