2011-01-24 13 views
0

の実行に関する:質問私はこのコードで遭遇したJSコード

foo = (function() { 
    var div = document.createElement('div'); 
    return function(html) { 
     div.innerHTML = html; 
     var item = div.firstChild; 
     div.removeChild(item); 
     return item; 
    }; 
})(); 

、それはこのように使用されている:

var element=foo('<table><tr><td></td></tr><table>'); 

私は上記のはそれでJavaScriptの要素を返すことに気づきました。

var element=$('<table><tr><td></td></tr><table>')[0]; 

オリジナルのJS機能は実際に実際に何をしているのですか?これをとる利点は何ですか?var div = document.createElement( 'div'); return文の外に

+0

同じです。その関数はjQueryを使用せずにそれを実行します。 – Raynos

答えて

2

これはdivドキュメント要素を1回作成し、このメソッドの将来の実行のために関数のスコープにキャッシュします。したがって、関数が呼び出されるたびに作成する必要はありません。

それは怠惰な初期化と呼ばれるマイクロ最適化のパターンです - あなたはあなたの2番目の質問に答えるために、ここでそれについてhttp://en.wikipedia.org/wiki/Lazy_initialization

をより多くを読むことができます - はいあなたはjQueryのであったことは、あなたとまったく同じ出力を与えるだろう。