词的作用域

2018-07-17  本文已影响0人  我是一只要变快的小蜗牛

最近在学习javascript,把自己能够理解的记录下来

var x = "hello";

    var test = function(){

        console.log(x);    //弹出"undefined"

        var x = "hi";

        console.log(x);   //弹出"hi"

    }

    test();

x='hello'是一个全局作用域,在函数作用域test中打印变量x,涉及到变量提升,会先从自身查找局部变量x,已经找到,不会再继续向上查找。这个时候指向全局对象,也就是window.

上面的例子和下面的这个是等价的,变量提升(先调用,后声明)

var x = "hello";

    var test = function(){

      var x;

        console.log(x);    //弹出"undefined"

        var x = "hi";

        console.log(x);   //弹出"hi"

    }

    test();

var x = "hello";

    function test(){

        console.log('打招呼说' + x);//弹出"hello";

    }

    test();

在本身查找不到就查找到全局变量x,所以打印出来是hello

当调用test()函数时,形成的作用域链为‘调用对象’==》‘全局对象’

打印(x)时,首先查找调用对象(test函数)是否有x的属性,如果有则使用‘调用对象’的x,如果没有,就接着查找‘全局对象’是否有x的属性。

还没有写全,(只有自己看的明白就行了)下次再补

上一篇 下一篇

猜你喜欢

热点阅读