gpt4 book ai didi

javascript - 了解闭包及其作用域

转载 作者:行者123 更新时间:2023-12-03 11:14:05 25 4
gpt4 key购买 nike

我无法理解闭包和作用域。在出现意想不到的行为之前,我非常确定自己理解它。

function doSomething () {
// Code unrelated to frag

var rightDiv = document.createElement(rightDiv);

var img, i, frag = document.createDocumentFragment();
for (i = 0; i < photoIDs.length; i++){
img = new Image();
addClass(img, "popup-image-preview");
img.src = "photos/"+photoIDs[i]+".jpg";
frag.appendChild(img)
}
// add popup for preview
addEvent(rightDiv, "mouseover", function() {
showPopup(frag, this);
console.dir(frag);
});

// more code unrelated to frag
}

我预计 onmouseover 处理程序仍然可以访问包含图像的 DocumentFragment。但是当我在控制台中查看它时,它不再有任何 child 。这个特定的匿名函数是否可以访问 这个特定的 doSomething 执行的局部变量的值,或者对 doSomething 的后续调用是否会影响先前执行的关闭?后者将使我的情况变得可以理解,因为随后对 doSomething 的调用可能有一个空的 frag

最佳答案

一般来说,您是对的,您的代码应该按预期工作。但有几件事让我们感到疑惑:

  • rightDiv 在哪里定义的?看起来您正在向该“节点”添加越来越多的 mouseover 事件,因为它不是上下文的一部分。

  • addEventshowPopup 是否修改了 frag 变量上的任何内容?

关于javascript - 了解闭包及其作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6731002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com