top
Loading...
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.前綴吧。


作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗