为什么在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
原文地址:https://www.cnblogs.com/mmykdbc/p/6485984.html