关于JS中变量作用域的问题

初学JS,翻看之前写的一个案例,产生了一些疑问。

img


这是一个拖动盒子移动的代码,其中定义的x y变量为什么能在mousemove事件中使用,不应该声明为全局变量吗?求解答

你的mousemove事件定义在mousedown里面,而 x, y变量是在mousedown定义的,相对来说,在mousedown,x和y就是全局变量,而mousemove在mousedown里定义,所以是可以使用x,y变量的

如果你的mousemove函数定义在外面,那x,y也必须是全局变量
可是mousemove函数本身就定义在mousedown的里面,addevent也在里面

var所定义的变量就是全局变量