javaScript中的小细节-局部作用域中的var

  javaScript中var是很神奇的,在局部作用域中,var a = b = c = 1;是不一样的,a为使用var声明的变量,而b和c则是全局下的,此类变量被称为隐式全局变量;var a = 1;b = 1; c = 1;分号分隔开的就很好理解了,使用var则为局部,未使用则为全局;var a = 1,b = 1,c = 1; 此种声明方式则是共用一个var,所以都是局部的;

  此外,在函数中使用var声明的变量就是局部变量是不准确的,如果自身是函数,父级还是函数,那么在父级中var声明的变量和自身未使用var声明的变量相同,如果此时全局中也有相同的变量时,调用后它只会去修改父级作用域中使用var声明变量的值而无法去修改全局的。

var num = 1;
    function fN1() {
        var num = 2;

        function fN2() {
            num = 3
        }

        fN2();
        console.log(num);    //3
    }
    fN1();
    console.log(num);    //1
   fN2();   //is not defined

 

posted @ 2016-12-31 01:56  toWorkIt  阅读(242)  评论(0)    收藏  举报