連想配列のキー名にマルチバイト文字は使えないと思い込んでいた話
表題の通りなのですが私は最近までJavascriptの連想配列のキーにはマルチバイト文字が使えないものだと思い込んでいました。(実際は使えます)
Pythonでは使っていたにも関わらずJavascriptでは使えないと思い込んでいた理由は、Javascriptにおいては「連想配列のキー=オブジェクトのプロパティ名」なのだから
var test = {"あいう":"マルチバイト"};
を認めてしまうと
test.あいう
という記述も認めなくてはならず、こんな事出来るはずない!と考えていたからです。
上にも書いた通り実際にはマルチバイト文字も使用可能なので
var test = {"あいう":"マルチバイト"}; window.alert(test["あいう"]);
は、もちろん問題なく動作しますし、
var test = {"あいう":"マルチバイト"}; window.alert(test.あいう);
という記述も私が確認したIE8、Chrome、FireFoxのいずれにおいても動作します。
ただ仕様として
test.あいう
という記述は本当に問題がないのか調べてみると、実際はECMAScript5では連想配列のキーどころか変数名にもマルチバイト文字が使えるようです。
つまり
var あ = "あいうえお"; window.alert(あ);
というコードも正しいということです。
正しいJavaScriptの変数名とは?:海外テック情報局|gihyo.jp … 技術評論社で紹介されていますが、記号も問題なく使えるので
var π = Math.PI;
といった記述も可能とのこと。
実用性があるかどうかはわかりませんが面白いです。