javascript - jquery 局部和全局变量的问题?

查看:89
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆