关于执行JS代码的问题

时间:2011-01-24 14:12:58

标签: javascript jquery

我刚刚遇到这段代码:

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'); 有什么好处?

1 个答案:

答案 0 :(得分:2)

它创建一个div文档元素并将其缓存在函数的范围内,以便将来执行此方法,因此不必在每次调用函数时都创建它。

这是一个名为Lazy初始化的微优化模式 - 您可以在这里阅读更多相关信息http://en.wikipedia.org/wiki/Lazy_initialization

回答你的第二个问题 - 是的,你在jQuery中展示的内容会给你完全相同的输出。