連想配列のキー名にマルチバイト文字は使えないと思い込んでいた話

表題の通りなのですが私は最近までJavascript連想配列のキーにはマルチバイト文字が使えないものだと思い込んでいました。(実際は使えます)

Pythonでは使っていたにも関わらずJavascriptでは使えないと思い込んでいた理由は、Javascriptにおいては「連想配列のキー=オブジェクトのプロパティ名」なのだから

var test = {"あいう":"マルチバイト"};

を認めてしまうと

test.あいう

という記述も認めなくてはならず、こんな事出来るはずない!と考えていたからです。

上にも書いた通り実際にはマルチバイト文字も使用可能なので

var test = {"あいう":"マルチバイト"};

window.alert(test["あいう"]);

は、もちろん問題なく動作しますし、

var test = {"あいう":"マルチバイト"};
	
window.alert(test.あいう);

という記述も私が確認したIE8、ChromeFireFoxのいずれにおいても動作します。

ただ仕様として

test.あいう

という記述は本当に問題がないのか調べてみると、実際はECMAScript5では連想配列のキーどころか変数名にもマルチバイト文字が使えるようです。
つまり

var あ = "あいうえお";
	
window.alert(あ);

というコードも正しいということです。

正しいJavaScriptの変数名とは?:海外テック情報局|gihyo.jp … 技術評論社で紹介されていますが、記号も問題なく使えるので

var π = Math.PI;

といった記述も可能とのこと。
実用性があるかどうかはわかりませんが面白いです。