voidと()を試してみた
id:rokuroxさんに教えていただいたことを、試してみた。
いろいろ調べてみると、びっくりすることがたくさんあった。
いろいろ実行してみた。こんな時便利なのはFirebugのコンソール。
void(alert("hoge"))
void(function(){alert("hoge")})
void( (function(){alert("hoge") )()})
void(alert("hoge");alert("fuga");)
なるほど・・・。
もうちょっと調べてみた。
void 演算子は次の方法のうち、どちらかの方法で使用します。
1. void (expression)
2. void expressionvoid 演算子は値を返さずに評価する式を指定します。
Core JavaScript 1.5 Guide:Operators:Special Operators - MDC
voidがOperatorだと・・・。演算子なのか・・・?
タイプ : ビルトイン関数<中略>
void/JavaScriptリファレンス
void(メソッドまたは数式)
ん、ビルトイン関数。関数なのか?まあmozillaのほうが正しいのだろう。きっと。
voidが演算子とはびっくりだ。
Javaのvoidとは大分違うんだな。Javaだと型(戻り値のない型)見たいな感じがする(調べていないけど)。
Core JavaScript 1.5 Reference:Operators:Operator Precedence - MDC を見てみると、なんと new も演算子だ。
さて、voidに戻る。
最初はvoidという関数の引数は関数なんだ。だから alert("hoge");alert("fuga"); はだめなんだと考えたが、どうやら違うみたい。
;は式の終わりを示す。だからだめなんだ。
function(){alert("hoge");alert("fuga");}
これなら1つの式だ。だからうまくいく。
あと()で実行するというところ。
これはちょっと考えればわかった。
(function(){alert("hoge");alert("fuga");})()
↑は↓と同じことなんだと思う。
func = function(){alert("hoge");alert("fuga");}; func();
JavaScript、奥が深い。
関係ないけど、プロトタイプとか全然分かっていないので、ちゃんと勉強したい。
id:rokuroxさん、とても勉強になりました。ありがとうございます!