2013-06-06 8 views
9

ちょうどJavascriptのファンキーな関数書き換えコンセプトが出てきました。Javaスクリプトの書き換え機能

var foo = function() { 
    alert("Hello"); 
    foo = function() {alert("World !");}; 
}; 
foo(); 
foo(); 

どのような状況で、これらのコードはこの種のコードをサポートする他のスクリプト言語ですか?

フィドラーリンク://javascriptweblog.wordpress:http://jsfiddle.net/4t2Bh/

+1

のように最初の呼び出しでLUTを初期化するために、このイディオムを使用することができます。怠惰な読み込みに似ている点を除けば、変数がaを保持することを除いて、com/2010/04/27/the-russian-doll-principle-re-writing%C2%A0関数%C2%A0at%C2%A0runtime /#more-351)関数。 – jbabey

+0

これは、変数がすでに定義されていることを警告し、 "Hello" http://jsbin.com/ocezar/1/edit – elclanrs

+1

@elclanrsに警告しますが、 'foo()'をもう一度呼び出すと警告が表示されます。こんにちは。 – epascarello

答えて

1

あなたは、これは[怠惰な関数の定義](HTTPと呼ばれているこの

var getBase32Value = function (dummy) { 

    var base32Lut = {}; 
    var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; 

    for(var i=0; i<alphabet.length; i+=1) { 
     base32Lut[ alphabet[i] ] = i; 
    } 

    getBase32Value = function (v) { 
     return base32Lut[ v ]; 
    } 
    return base32Lut[ dummy ]; 
} 
関連する問題