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

