为了账号安全,请及时绑定邮箱和手机立即绑定

javascript作用域和作用域链

javascript作用域和作用域链

holdtom 2018-11-13 16:14:34
<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>test</title></head><body>    <script>        window.onload=function(){            var scope="global";            function t(){                console.log(scope);                var scope="local";                console.log(scope);            }            t();        }    </script></body></html>上面的这一段代码,第一个打印的是undefined,第二个打印的是local,这是为什么啊,不是说通过作用域链可以向上访问的吗,那为什么第一次打印的时候会是undefined。
查看完整描述

1 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

不知道你看的哪本书,应该基本上都会讲到。

window.onload=function(){

    var scope="global";

        function t(){

            console.log(scope);

            var scope="local";

            console.log(scope);

        }

    t();

}


这里是变量声明提前,修改后就是这样

        function t(){

            var scope;

            console.log(scope);

            scope = "local";

            console.log(scope);

        }

所以第一个.log输出是因为在自己的函数作用域链上找到了一个本地变量,但是此时还没有赋值-->undefined。

同理,第二个是因为已经赋值了--> local。


查看完整回答
反对 回复 2018-12-05
  • 1 回答
  • 0 关注
  • 464 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号