理解 Dojo 闭包示例

understanding Dojo closure example

在 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");
    });
}
});

我假设 function(elm) 是一个闭包,'elm' 是 element 的缩写,在这种情况下创建了 2 个闭包,第一个闭包为 elm = h2,第一个闭包为 elm = h3第二次关闭。这是正确的吗?

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