前の記事 ≪:JavaScriptでIEかどうかをたったの1行で判別する方法
次の記事 ≫:広面積なWebページも丸ごとキャプチャーできるFirefox拡張機能「Screengrab...

JavaScript関数に関する様々なテクニック集

2007年04月05日-はてなブックマーク

スポンサード リンク
[PR] 英単語を忘却曲線アプリを使って超効率よく記憶する方法
Functional Javascript
Lisp? Scheme? Erlang, Haskell? Forget about them! The most widely deployed functional programming language is Javascript.

JavaScript関数に関する様々なテクニック集が紹介されていました。

まずは基本的なJavaScript関数の使い方

<script language="javascript">
function hello(who) {
    alert('Hello '+who);
}
hello('world');
</script>

「Hello World」を出力。

続いては関数リテラルのシンタックスによる関数の定義。

<script language="javascript">
var hello = function (who) {
    alert('Hello '+who); // outputs "Hello world"
}
hello('world');
</script>

ちょっとJavaScriptを勉強をした方はここまでは知っているはず。

続いて次のちょっと変わった使い方。
hello 変数に関数リテラルの方式で変数に関数を代入し、その関数を別の関数sayの引数にして引数を関数として扱う方法です。

<script language="javascript">
var say = function(what) {
    what('say function');
}
var hello = function (who) {
    alert('Hello '+who); // outputs "Hello say function"
}
say(hello);
</script>

これは面白いです。「Hello say function」 がalertされます
次もちょっとかわった使い方。

<script language="javascript">
function pushedMyButton() {
    alert('you pushed my button!');
}
function doSomething() {
    return pushedMyButton; // return a pointer to the pushedMyButton function
}
document.onclick=doSomething();
</script>

document.onclick イベントに関数「doSomething」を指定し、その「doSomething」が別の関数「pushedMyButton」をリターンすることで、onclick イベントに「pushedMyButton」イベントを付与する方法。
ブラウザ画面をクリックすることで pushedMyButton が実行されます。

次も興味深いです。

<script language="javascript">
var test = function () {
    return "This is a String";
}
var testCopy = test; // testCopy is a pointer to the test function()
var testStr = test(); // testStr contians "This is a string"
</script>

test を関数リテラルで定義して、他の変数に代入する時、testCopy の場合だと関数ポインタとなり、testStr の場合だとtest関数の返却する文字列がそのまま代入されます。
最後の () があるかないかで挙動が変わっています。

その他にもいろいろなJavaScript関数の使い方について述べられています

我こそはJavaScripter という方は是非とも覚えておきたいテクニックですね。

関連の記事検索:JavaScript, チュートリアル, プログラム
スポンサード リンク

By.KJ : 2007年04月05日 10:05 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)