Flickrスライドショーの作り方
Javascriptの黒魔術=クロージャを宮沢賢治風に説明してみる

フィボナッチ関数とJavascriptの黒魔術と

 「最近あなたのブログ、プログラミングの話ばっかりじゃない?」とは妻の指摘。確かにその通りなんだが、これとかこれを読んでしまうと、どうしてもそちらに走りたくなるのが私の性分。ということで、とことん「ギーク街道」に堕ちてみた。

 今回の作品は、iAnime.jsの非同期JSON言語(名前はまだない)を使って非同期に自分を再帰的に呼び出しながらただひたすらにフィボナッチ数列を表示するというプログラム。

function start(k1, k2)
{
    var span = (k2+" ").length*10;
    var obj=document.createElement("span");
    obj.style.position = "absolute";
    obj.style.left = -span+"px";
    obj.style.right = "0px";
    iBrowse.setText(obj, k2);
    document.body.appendChild(obj);
    var delay = 30000 * span / 400;
    anime.addSequence([
        [{ duration:delay, onComplete:function() {start(k2, k1+k2);} }],
        { element:obj, x:400-span, effect:'fadeout', duration:30000 },
        { onComplete:function() { document.body.removeChild(obj); }}
    ]);
}

 パラメータ(k1, k2)が無名関数の引数としてだけ、それも非同期に引き継がれて行くところが、C++/Javaプログラマーたちにとっては黒魔術のように見えるかも知れない。

Comments

hoshino

文系人間ですが「プログラミングの話」を楽しませていただいてます。ブログはその人にしか書けない記事でこそ価値があるとおもっていますので奥様には申し訳ないですが中島様のブログはぜひこのままの方向性で行っていただきたいものです。

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

Your Information

(Name is required. Email address will not be displayed with the comment.)