0

我正在使用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()函數導致這種情況發生,我有什麼修復它的選項?

回答

0

您可能希望之前它在這種情況下,變量X被宣佈爲腳本3改爲var x; x = x || {}; x.a = function(){ ... }
這可能已經導致因變量的搶先使用。
事實上,變量x是不可用在腳本2是因爲eval()方法與突然失敗「x是未定義
實際上我理解只有律」從一段代碼,是指腳本位3
如果我能看到它,那麼我可能比現在對你有更好的幫助。
希望這會有幫助