欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

JS运行三部曲

发布时间:2023/12/10 javascript 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 JS运行三部曲 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
  • 语法分析

  • 预编译

  • 解释执行

  • 下面两句话能解决问题,但解决不了深入的问题,其实原理是  预编译产生的两个现象(规律)。

    • 函数声明整体提升
    • 变量   声明提升

    预编译前奏

    imply global 暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量就为全局对象所有(全局对象是window)。

    eg: a = 123;

    eg: var a = b = 123;   这里的 b 是没有声明的,所以归window所有,所以如果这个表达式出现在局部函数,那么b会变成全局变量,而a是局部变量,值都是123

    一切声明的全局变量,全是window的属性。

    eg: a = 123;   相当于  window.a = 123;

    window就是全局的域

    预编译

    eg - 预编译前:

    预编译发生在函数执行前的前一刻

  • 创建AO对象(Activation Object)
  • 找形参和变量声明,将变量和形参名作为AO属性名,值为undefuned
  • 将实参值和形参统一
  • 在函数体里面找函数声明,值赋予函数体
  • eg - 预编译后:

    全局的预编译原理是一样的,只是对象是GO(Global Object),window其实是GO的引用

    2013百度面试题--

     

     

    总结

    以上是生活随笔为你收集整理的JS运行三部曲的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。