12.26---01函数预解析

37 阅读1分钟

预解析的一个表现就是 声明式函数再定义前可以被调用

预解析是什么?

JS 在执行代码的时候, 会有一个 所谓的 解析阶段

解析阶段, 做了一件事, 就是 函数提升, 就是将 声明式 函数的定义, 提升到当前 作用域的最顶端

作用域的最顶端:暂时理解为 当前页面的最开始的位置

    fn()
    function fn() {
        console.log('我是 fn 函数, 我被调用了')
    }

一道面试题: 函数的预解析是什么? 正常书写的 代码

     fn()
     function fn() {
     console.log('我是 fn 函数, 我被调用了')
    }

浏览器会对我们的 JS 代码, 做一个 预解析, 预解析的时候, 会将函数提升到 当前作用域的最顶端, (暂时理解为 当前页面最开始的位置)

fn() -> 这行代码是函数调用, 所以不需要提升

function fn() { -> 这是一个声明式定义的函数, 所以需要提升

console.log('我是 fn 函数, 我被调用了') }

预解析之后的代码长什么样(执行顺序)?

 function fn() {
      console.log('我是 fn 函数, 我被调用了')
     }
    fn()    // 所以此时调用的时候, 因为 fn 函数已经定义完成了, 所以这里能够正常执行函数