理解Dojo闭包的例子

时间:2015-02-12 00:04:49

标签: javascript dojo closures

在Dojo文档中有一个例子:

require([
"dojo/query",
"dojo/_base/array",
"dojo/dom-construct",
"dojo/domReady!"
], function(query, array, domConst){
function topLinks(){
    var headings = query('h2,h3');

    array.forEach(headings, function(elm){
        var topLink = domConst.create("a", {
            href: "#top",
            innerHTML: "^top"
        });

        domConst.place(topLink, elm, "before");
    });
}
});

我假设函数(elm)是一个闭包,'elm'是元素的缩写,在这种情况下创建了2个闭包,第一个闭包用elm = h2,第二个闭包用elm = h3。这是对的吗?

1 个答案:

答案 0 :(得分:1)

与CSS一样,dojo/query支持分组选择器。 h2,h3将匹配所有h2h3元素,headingsdojo/NodeList,其中包含所有h2h3个元素在文件中。 array.forEach只是按顺序遍历整个NodeList,因此每次通过函数elm都会引用下一个h2h3元素。