IE瀏覽器中一個值得關注的JS問題
剛才在調試js,在mozilla中一切正常,但是在ie中卻報告有configuration變量沒有找到。以下是代碼:
以下是引用片段: var Environment = new (function Environment$ctor() { this.processCommandLine = function Env$procCmdLine(q) { var cmd = configuration {}; // <---- 就是這一行報告錯誤 // 其他代碼省略 } }; |
我先后把這一行改成如下的形式:
以下是引用片段: var cmd = configuration == null? {}: configuration; var cmd = "undefined" == typeof(configuration) ? {}: configuration; var cmd = {}; if( "undefined" == typeof(configuration) ) cmd = configuration; 都是報告同樣的錯。嘗試了多種方法沒有效果之后,無奈中把這一行修改成如下的形式: var cmd = window.configuration {}; |
竟然通過了!!!
最后分析,原因就是JScript中實現和標準的ECMAScript有差距,原來應該configuration找不到的話,應該往上遞推,擴大作用域搜索范圍,直到搜索到全局變量中。很顯然,JScript沒有這樣做。
所以,以后大家要是遇到Mozilla中好使,但是IE中莫名其妙地報告變量找不到的話,嘗試一下加上windows.前綴吧。