gpt4 book ai didi

javascript - 为什么即使在 javascript 的局部范围内为全局变量赋值后,全局变量仍未定义

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:44:09 26 4
gpt4 key购买 nike

我对闭包属性的理解是,函数作用域内的每个变量都可以访问该函数所在的父作用域中的所有变量,

所以考虑到这个定义,我不理解下面代码的行为:

var mouseX, mouseY;

window.onload = function() {

this.addEventListener('mousemove', function() {
mouseX = event.clientX;
mouseY = event.clientY
}); // mouseX and mouseY are defined

petObj = new Pets();


}

function Pets(){
document.getElementById('imageList').addEventListener('mouseenter',function()
{
console.log(mouseX)} //undefined mouse X!!!
}

我接受mousemove 事件监听器的匿名函数内部mouseX 的分配,以引用在函数外部声明的全局变量。但是正如您所看到的,它在匿名函数的范围之外保持未定义状态

最佳答案

您正在设置事件处理程序的“加载”处理程序中记录“mouseX”的值。还没有发生任何事件,所以变量仍然是 undefined

变量可用的,如果你把一个console.log()调用放在事件处理程序中,或者其他地方这样代码就会运行一些“mousemove”事件发生后,您将看到正在更新的值。

关于javascript - 为什么即使在 javascript 的局部范围内为全局变量赋值后,全局变量仍未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32978741/

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