Javascript作用域和预解析

作用域链

    内部函数访问外部函数的变量,采取的是来链式查找的方式来决定取哪个值(就近原则)
    var num =10;
    function f01(){
        var num = 20;
        function f02(){
            console.log(num);//20
        }
    }    

预解析

1.js引擎运行js 分为两步:预解析  代码执行
2.预解析 js引擎会把js里面所有的var还有function 提升到当前作用域的最前面
3.代码执行  从上往下执行
(1)变量提升:把所有的变量声明提升到当前的作用域最前面,不进行赋值操作
     /*
     预解析变量提升
    */
    console.log(num);//undefined
    var num = 10
    //相当于
    var num;
    console.log(num);
    num=10;
(2)函数提升:把所有的函数声明提升到当前的作用域最前面(函数表达式必须写在表达式后面)
    var num = 10;
    function f01(){
        console.log(num);//输出undefined
        var num = 20;
    }
    f01();
    //上面代码预解析相当于
    var num;
    function f01(){
        var num;
        console.log(num);//输出undefined
        num = 20;
    }
    num = 10;
    f01();  
posted @   摆烂员  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示