为什么在js当中没有var就是全局变量


因为,在js中,如果某个变量没有var声明,会自动移到上一层作用域中去找这个变量的声明语句,如果找到,就是用,如果没找到,

就继续向上寻找,一直查找到全局作用域为止,如果全局中仍然没有这个变量的声明语句,那么自动在全局作用域进行声明,这个就

是js中的作用域链,也叫变量提升

 

代码示例如下:

var data = 10;
function fn1() {
    var data = 100;
    alert(data);//此时的data为100
    fn2();
    alert(data);   //此时的data为10000
    function fn2() {
        data = 1000;
        fn3();
        function fn3() {
            data = 10000;
        }
    }
}
fn1();
console.log(data); //此时的data为10

 


由此可知,上面代码中,fn1函数里面由于data用关键字var来声明了,所以这里面的data职能找到函数里面的最顶层的var data进行赋值替换,而不会影响到外面用var 来声明的data


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM