我正在使用Internet Explorer中的傳統應用程序。它具有以下代碼:全局變量沒有通過堆棧傳遞 - IE8
腳本1:/* Call script 2 */; x.a(b)
腳本2:eval(script3)
腳本3:var x = x || {}; x.a = function(){ ... }
在Firefox中,可正常工作。
然而,在Internet Explorer中,它通過說「x未定義」(這是大量簡化)失敗。我將其追溯到代碼中的這一點,並指出x
在腳本3中定義,但隨後在棧中回落到腳本2,它失去了它的可用性/範圍(我通過將console.log語句放入-IE與腳本3中的腳本無關,但腳本2中的腳本崩潰)。
怎麼樣的Internet Explorer和/或eval()
函數導致這種情況發生,我有什麼修復它的選項?