第50回
今回は第50回ということで、カンマ演算子についてやります。
コード
function Main(f){
	switch(f){
		case 0:
			var a=(b=1,b++,b);
		break;
		case 1:
			var a=(a=2,a+1);
		break;
		case 2:
			var a=[(b=1,b+2),2];
		break;
		case 3:
			var a=(b=this.constructor,1);
			alert(b);
		break;
	}
	alert(a);
}

カンマ演算子の優先度は低く、だいたいの場合は()で括る必要があるようです。
この演算は、
2つの文を続けて実行し、得られる値を返す(左の文を実行した上で右の文を評価する)
という解釈で納得できます。
Main(0)は基本的な事、Main(1)は代入する変数をダイレクトに扱うこと、
Main(2)は配列を定義する際のカンマとの区別(()で括らないと3項の配列になります)、
new Main(3)は、わかりづらいですが、カンマ文はpublicで実行されているのか、privateで実行されているのか
という実験をしています。結果はprivateだと思いますが。
ちなみに、カンマ文内でvarを使おうとするとエラーになります。
つまり、関数内のカンマ文内でprivateな変数を定義することは出来ないということみたいです。
なので、無名関数を使うのが無難なところ、といったところでしょうか。
top  戻る