Java と JavaScript の \uXXXX
ちょっとした雑学を。
BMPしか扱えない\uXXXXは、JavaScriptがJavaから受け継いだ Bad Legacy だ。
404 Blog Not Found:javascript - \uXXXXを使わない理由
のあたりを見て、ふと思い出したネタでも1つ。
java の場合
\u0070\u0075\u0062\u006C\u0069\u0063\u0020\u0063\u006C\u0061\u0073\u0073\u0020\u0048\u0065\u006C\u006C\u006F\u007B\u0070\u0075\u0062\u006C\u0069\u0063\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0076\u006F\u0069\u0064\u0020\u006D\u0061\u0069\u006E\u0028\u0053\u0074\u0072\u0069\u006E\u0067\u005B\u005D\u0061\u0072\u0067\u0073\u0029\u007B\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074\u006C\u006E\u0028\u0022\u0048\u0065\u006C\u006C\u006F\u0020\u0077\u006F\u0072\u006C\u0064\u0021\u0022\u0029\u003B\u007D\u007D
これは正当な Java プログラムです。あまり知られていない感がたっぷりですが、Java は \uXXXX をソース中の任意の位置に使えます。このまま javac して java すると "Hello world!" と出力します。
javascript の場合
\u0061\u006C\u0065\u0072\u0074\u0028\u0022\u0048\u0065\u006C\u006C\u006F\u0020\u0077\u006F\u0072\u006C\u0064\u0022\u0029\u003B
これは不当な JavaScript プログラムです。JavaScript では \uXXXX は文字列リテラル、正規表現リテラル、または識別子のコンテキスト上でしか使えません。