amachangさんの「一行で IE の JavaScript を高速化する方法」を見てて、見慣れない/*@cc_on なんちゃらなんちゃら @*/ って記述が気になった。

なんだろうとおもい、早速ぐぐってみたところ、ここに書いてありました。

@cc_onはステートメントというものらしく「条件付きコンパイルの機能をアクティブにします。」との説明があります。

でも、「条件付きコンパイル」ってなんだよ!そんなの知らないぜ!
ということで調べてみたら、以下のようなことが書いてありました。

条件付きコンパイルを使用すると、JScript の新しい言語機能を利用しながら、その新機能をサポートしていない以前のバージョンとの互換性も保持できます。JScript の新機能を使用する場合、スクリプトにデバッグサポートを埋め込む場合、コード実行をトレースする場合などは、条件付きコンパイルを使用するのが一般的です。

なるほど。ようは、条件付きコンパイルに対応していないブラウザには影響せずに、JScriptの新しい機能を使えちゃうぜ、ということらしいです。

ということでためしに以下のようなHTMLを書いて動作確認してみた。
<html>
<body>
<script type="text/javascript">
/*@cc_on document.write("Hello, JScript!"); @*/
</script>
</body>
</html>

このHTMLを各ブラウザで確認してみたところ、Internet Explorerで開くと「Hello, JScript!」とみごとに表示され、FirefoxやOperaだと表示されませんでした。

ちなみに「/*@cc_on」の /* と @ の間にスペース空けたり、@ と cc_on の間にスペースを空けても動きませんでした。ようは「/*@cc_on」のどこにもスペースは空けるなということですね。

この条件付きコンパイルは、こういう用途以外にもいろんな機能が使えるみたいですので、興味のある方はこちらの条件付きコンパイルの説明のページをご覧になってみてください。


ってここまで書いたけど、@cc_on ってもしや常識!?