理解 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
将匹配所有 h2
和 h3
元素,而 headings
将是一个包含所有 h2
和 h3
元素的 dojo/NodeList
在文档中。 array.forEach
只是按顺序遍历整个 NodeList
,因此每次通过函数 elm
都会引用下一个 h2
或 h3
元素。
在 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
将匹配所有 h2
和 h3
元素,而 headings
将是一个包含所有 h2
和 h3
元素的 dojo/NodeList
在文档中。 array.forEach
只是按顺序遍历整个 NodeList
,因此每次通过函数 elm
都会引用下一个 h2
或 h3
元素。