javascript - jquery 局部和全局变量的问题?
本文介绍了javascript - jquery 局部和全局变量的问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
函数中的定义的变量是因为每次执行之后销毁的缘故,所以每次if判断时都是undefined吗?
<button type="">点击</button>
var b;
$("button").click(function(event) {
var a;
if(a === undefined ){
a = 1;
alert(a)
}
if(b === undefined ){
b = 2;
alert(b)
}
});
解决方案
你真正要理解的是JS的作用域。
b 在全局作用域 global
点击发生后进入了另外一个作用域 local
在local作用域中每次都声明a 结果就是 a 每次都被赋值为 undefined ,
因为每次脱离这个作用域时,作用域里面的变量都被垃圾处理机制回收销毁,所以在每次点击后 a 又被重新声明并重新赋值为 undefined。
更进一步,JS这些作用域都是嵌套的,正因为有作用域链,才有了后面的闭包,不过那就是另一个话题啦。
var b; // global
$("button").click(function(event) {
var a; // local
// a undefined
// b undefined
});
这篇关于javascript - jquery 局部和全局变量的问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文