InternetExplorerで壊れているレガシーアプリケーションに取り組んでいます。次のコードがあります。
スクリプト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()
関数がこれを引き起こすのはどうですか?それを修正するための私のオプションは何ですか?