【发布时间】:2015-07-27 11:34:39
【问题描述】:
我有这样的事情:
function main() {
function create_node() {
console.log("create_node")
(function() {
var memo;
console.log(memo);
function f() {
var value;
console.log(value);
if (memo) {
value = memo.cloneNode();
console.log("clone node");
console.log(value);
} else {
var value = document.createElement("div");
var style = "";
value.setAttribute("style", style);
value.innerHTML = "hello";
console.log("new node");
console.log(value);
}
return value;
}
return f;
})();
}
var colection = [];
for (var i = 0; i < 10; i++) {
colection.push(create_node());
};
}
main();
问题是我在尝试记录“create_node”时遇到错误(至少在 Firefox 中)。另外,如果我不返回 f(),而不是 f,它就不会被执行。在任何情况下,备忘录总是未定义的。所以我这里有这三个问题。我猜他们来自对复杂闭包缺乏了解,所以我需要一个 Javascript 摇滚明星来启发我!
【问题讨论】:
标签: javascript closures memoization