局部作用域优先级的问题

局部作用域优先级的问题

    var name='xm';

    function fn(){

        var name='xh';

        var sex='mate';

        function fn2(){

            var name='xhei';

            age=18

            console.log(name)   //xhei

        }

        fn2();

        console.log(name)   //xh

    }

    fn();

    console.log(name);  //xm





这里按照可里面的说法内岑的变量优先级高,怎么打印的时候还是外层的全局变量先打印,这里不理解

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕星星 2021-07-02 18:41:58

同学你好,问题解答如下:

1、第一次var声明的name是全局变量

http://img1.sycdn.imooc.com//climg/60deebbf09b287ef02440037.jpg

函数内部var声明的是局部变量,没有var声明的是全局变量

http://img1.sycdn.imooc.com//climg/60deec0c099f4d6204200579.jpg

2、在fn2函数中定义了name变量,所以不会去找上一层中的name,输出的name为‘xhei’。

在fn函数中定义name变量,所以输出的是‘xh’,不会去外层去找全局变量。

在全局中输出name使用的是全局变量值‘xm’。


同学说的是内层变量优先级高,指的是fn2函数中有name变量,自己作用域中就不会使用fn中的;同理fn函数中的name也适用,自己作用域中有name就不会使用全局中的。

全局作用域拿不到函数中局部变量,使用会报错的。例如

http://img1.sycdn.imooc.com//climg/60deed6009e6d95703670276.jpg

http://img1.sycdn.imooc.com//climg/60deed660948a73f04600066.jpg

自己再理解下,祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师