我刚刚遇到这段代码:
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功能究竟在做什么?在return语句之外使用 var div = document.createElement('div'); 有什么好处?
答案 0 :(得分:2)
它创建一个div文档元素并将其缓存在函数的范围内,以便将来执行此方法,因此不必在每次调用函数时都创建它。
这是一个名为Lazy初始化的微优化模式 - 您可以在这里阅读更多相关信息http://en.wikipedia.org/wiki/Lazy_initialization
回答你的第二个问题 - 是的,你在jQuery中展示的内容会给你完全相同的输出。