FaceBookにも書きましたが、javascriptは「functionが第一級型」「すべてが連想配列」ということが腑に落ちるようになるとすごくおもしろくなります。 なので、今回は「functionが第一級型」についてちょっと解説。
第一級型ってなんぞやっていうのはWikipediaでも見てもらうとして、 要するに、functionもstringやboolと同じように、自由に変数・引数・戻り値として使えるということですね。
例えば、これはごく初歩的なfunctionの使い方
function sayHello(name) { return "Hello," + name + "!"; } WScript.echo(sayHello("Tetsuya"));// => "Hello,Tetsuya!"
では、(あんまり意味ないけど)このsayHelloっていう関数を変数に代入してみます。
function sayHello(name) { return "Hello," + name + "!"; } //WScript.echo(sayHello("Tetsuya"));// => "Hello,Tetsuya!" var _say = sayHello; // _sayにsayHelloというfunctionを代入 WScript.echo(_say("Tetsuya")); // => "Hello,Tetsuya!"(上でコメントアウトした行とまったく同じ)
このようにfunction型も普通に変数に格納することが出来て、格納した変数に()をつけてあげることで呼び出すこともできます。
ちなみに、
function sayHello(name) { return "Hello," + name + "!"; } WScript.echo(typeof(sayHello)); //=> "function" WScript.echo(typeof(sayHello()));//=> "string"このようにtypeofで型を調べると、
- sayHello("()"を付けない)=>function型
- sayHello()("()"を付ける)=>string型(関数が実行されてreturnで返した値が返る)
もちろん、上記の例はあんまり意味の無いコードなので、「だからどうした!?」って言いたい気持ちは分かります(笑)
でも、この特性をうまく使うと面白いことができるんです。続きは次回。
0 件のコメント:
コメントを投稿