全局变量未在堆栈中传递 - IE8



我正在开发一个在Internet Explorer中崩溃的遗留应用程序。 它具有以下代码:

脚本 1:/* Call script 2 */; x.a(b)

脚本 2:eval(script3)

脚本 3:var x = x || {}; x.a = function(){ ... }

在 Firefox 中,这按预期工作。

然而,在Internet Explorer中,它通过说"x是未定义的"而失败(这是大大简化的)。 我在代码中追溯到这一点,并注意到x是在脚本 3 中定义的,但随后在堆栈中返回到脚本 2,它失去了可用性/范围(我通过将控制台.log语句放在两者中来测试这一点 - IE 对脚本 3 中的语句没问题,但脚本 2 中的那个崩溃了)。

Internet Explorer和/或eval()功能如何导致这种情况发生,我有什么修复方法?

为什么不设置一个测试并亲自看看呢?

这是其中之一:http://jsfiddle.net/Y3bf5/

它似乎在IE7 +中工作正常。

您可能

希望将脚本 3 更改为var x; x = x || {}; x.a = function(){ ... }
这可能是由于在本例中声明变量 x 之前抢占使用变量造成的。
变量 x 在脚本 2 中不可用的事实是因为 eval() 方法突然失败,并显示"x 未定义"
实际上,我只从引用脚本 3 的代码段中理解了一点点
如果我能瞥见它,那么我可能会比现在更好地帮助你。
希望这有帮助

相关内容

  • 没有找到相关文章

最新更新