首页 > 编程语言 >Javascript的预解析

Javascript的预解析

时间:2022-11-13 22:55:20浏览次数:35  
标签:console log Javascript js var 解析 函数

浏览器不是直接运行JS的,是调用js引擎运行js.

js引擎运行js分为两个步骤:

1.预解析 :js引擎会把js里面所有的var,以及所有的function提升到当前作用域的最前面

2.代码执行 :按照代码的书写顺序从上往下执行

 

预解析:

变量预解析--变量提升,就是把所有的变量声明提升到当前的作用域的最前面,不提升赋值操作

函数预解析--函数提升,就是把所有的函数声明提升到当前作用域的最前面,不调用函数.

尤其注意 两种函数声明方式在预解析中的不同

# 两种不同的函数声明方式

    <script>
        // 函数的2中声明方式
        // 1. 利用函数关键字自定义函数(命名函数)
        function fn() {

        }
        fn();
        // 2. 函数表达式(匿名函数) 
        // var 变量名 = function() {};
        var fun = function(aru) {
            console.log('我是函数表达式');
            console.log(aru);

        }
        fun('老师');
        // (1) fun是变量名 不是函数名  
        // (2) 函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值 而 函数表达式里面存的是函数
        // (3) 函数表达式也可以进行传递参数
    </script>

 

# 函数预解析

    <script>
        // 1问  
        console.log(num);



        // 2问
        console.log(num); // undefined  坑 1
        var num = 10;
        // 相当于执行了以下代码
        // var num;
        // console.log(num);
        // num = 10;



        // 3问  
        function fn() {
            console.log(11);
        }
        fn();




        // 4问
        fun(); // 报错  坑2 
        var fun = function() {
                console.log(22);

            }
            // 函数表达式 调用必须写在函数表达式的下面
            // 相当于执行了以下代码
            // var fun; 变量提升,因为此时是变量代表函数
            // fun();
            // fun = function() {
            //         console.log(22);

        //     }

        // 1. 我们js引擎运行js 分为两步:  预解析  代码执行
        // (1). 预解析 js引擎会把js 里面所有的 var  还有 function 提升到当前作用域的最前面
        // (2). 代码执行  按照代码书写的顺序从上往下执行
        // 2. 预解析分为 变量预解析(变量提升) 和 函数预解析(函数提升)
        // (1) 变量提升 就是把所有的变量声明提升到当前的作用域最前面  不提升赋值操作
        // (2) 函数提升 就是把所有的函数声明提升到当前作用域的最前面  不调用函数
    </script>

  

标签:console,log,Javascript,js,var,解析,函数
From: https://www.cnblogs.com/ericyjchung/p/16887590.html

相关文章