正しいJavaScriptの変数名の話をしよう
「var π = Math.PI; が文法的に正しいJavaScriptだと知っていますか?」という書き出しで始まるJavaScriptの変数名についてのエントリが話題になっていました。エントリーを書いたのはベルギーのフリーランスWEB開発者のMathias Bynensさんです。彼はUnicodeのどんなグリフが識別子として利用できるのかECMAScriptの仕様を見てみることにしたそうです。
ECMAScript 5.1によれば:
識別子は予約語ではない識別できる名前
となっており、直接記号やグリフについての制約には言及していません。元記事ではさらに予約語や識別子に使用できる文字の例外などについて解説した後に、下記のようなコードが有効なJavaScriptの変数名であるとして紹介しています。
// How convenient!
var π = Math.PI;
// Sometimes, you just have to use the Bad Parts of JavaScript:
var ಠ_ಠ = eval;
// Code, Y U NO WORK?!
var ლ_ಠ益ಠ_ლ = 42;
// How about a JavaScript library for functional programming?
var λ = function() {};
// Obfuscate boring variable names for great justice
var \u006c\u006f\u006c\u0077\u0061\u0074 = 'heh';
// …or just make up random ones
var Ꙭൽↈⴱ = 'huh';
// While perfectly valid, this doesn’t work in most browsers:
var foo\u200cbar = 42;
// This is *not* a bitwise left shift (`<<`):
var 〱〱 = 2;
// This is, though:
〱〱 << 〱〱; // 8
// Give yourself a discount:
var price_9̶9̶_89 = 'cheap';
// Fun with Roman numerals
var Ⅳ = 4,
Ⅴ = 5;
Ⅳ + Ⅴ; // 9
最後にもう一個あったのですが、うまくペーストできなかったので割愛しています。ブラウザ固有の不具合などで動かない場合もあるようです。これらの知見を元に作成されたと思われる変数名チェッカーもあるので触って試すこともできます。
このような先鋭的な変数名を使う機会は無いかと思いますが、デバッグなどには役に立つ知識ではありそうです。
via:Valid JavaScript variable names · Mathias Bynens


コメントを残す