2011-01-24 30 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');以外的退貨聲明?

+0

還有。該功能只是不使用jQuery而做的。 – Raynos 2011-01-24 14:19:25

回答

2

它創建一個div文檔元素並將其緩存在函數的作用域中,以便將來執行此方法,因此不必在每次調用函數時都創建它。

這就是所謂的延遲初始化微優化模式 - 你可以閱讀更多關於它在這裏http://en.wikipedia.org/wiki/Lazy_initialization

要回答你的第二個問題 - 是你在jQuery的表現會給你完全相同的輸出。