JavaScript的预解析

在JavaScript中有一种机制就是:“预解析机制”

简单来说就是在解析过程中会先将函数声明和变量声明提前解析
函数声明:

        function foo() {
            console.log(1)
        }

这种函数声明方式会将函数名和整个函数语句都提前
所以在遇到下面这种情况:

        var foo = function () {
            console.log(2)
        }

        function foo() {
            console.log(1)
        }
        foo();

猜一猜控制台会输出什么?
答案是:2;因为用function声明的foo 函数名和函数语句都被提前解析 ,匿名函数就会覆盖function 声明的foo,所以输出的是2

你可能感兴趣的:(JavaScript的预解析)