2011-07-05 10 views
15

Internet Explorerは "const"キーワードをサポートしていません。 "const"がサポートされているかどうかをチェックするシムを使用できますか?そうでない場合は、varとして再定義できますか?私はそれがオブジェクトを使用して不変性を強制するなら、それがいいと思う。フリーズ、しかし、私はシンプルなシムで大丈夫だろう。Internet Explorerでは "const"を "var"として再定義するためのJavascript shim

更新:これを変更しないで「const」を使用する既存のJavascriptライブラリを使用できます。明らかに、見つける/置き換えることはできますが、それは面倒でメンテナンスはあまりありません。

+7

識別子が定数であるかどうか(あなたがIEの 'var'を与えても構わないので)あなたのコードに関係ないならば、すべての識別子変数を作るだけではどうですか? – lonesomeday

+7

@lonesomeday - 同じ理由でconstが発明されました。それはvarよりもコードの意図を文書化し、constが利用可能になると、その意図も強制されます。彼は利用可能な言語の利点を使用しようとしています。最低限の分母にプログラムするだけではありません。私には理にかなっています。 – jfriend00

+0

いくつかの情報を追加 - 主な理由は、他の人が変更を加えずに書いたライブラリを使用できるようにしたいということです。 –

答えて

1

サーバー側のシムを書き込むことができます。したがって、ファイルが要求されたときに、constは、ファイルがブラウザにストリーミングされるときにvarに置き換えられます。 (適切な単語区切り/空白の検出が必要)

ブラウザではブラウザの機能を検出できないため、Internet Explorerのみでこれを行うにはUser-Agent文字列に依存する必要があります。クライアントブラウザで実行され、非constコードが必要であることをサーバーに伝えます。

"userprefs.css"ファイルは、Javaサーブレットに実際にバックアップされ、各ユーザー専用にファイルをビルドしてストリーミングしています。

+0

ありがとうございます - 私は機能の検出を使用してこのクライアント側を行う方法があり、サポートされていない場合はconstを定義したいと思っています。しかし、サーバー側だけがオプションかもしれません。 –

+0

このアイデアを基に、動的にページをリクエストしている場合は、javascriptで機能の検出を行い、すべてのページを接尾辞付きで読み込むことができます。 ?const = false。エクスプレス(およびおそらく他のサーバー)を使用すると、この状態を簡単にチェックしてから、ページを返す前に処理を行うことができます。 – Griffork

1

私はこのためにModernizerを使用し、Constのサポートに基づいて適切なスクリプトファイルをロードします。おそらく自動的に 'const'の自動検索と置換を行うことで、IE用の第2のバージョンを自動的に構築するGrunt JSプラグインを書くことができます。

関連する問題