IE瀏覽器中一個(gè)值得關(guān)注的JS問題

字號(hào):

剛才在調(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.前綴吧。