预编译

js执行三部曲:

(1) 语法分析
(2) 预编译
(3) 解释一行执行一行

预编译期间都做了啥事?

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

预编译四部曲:
(1) 创建执行上下文,即作用域链,this,和函数中的属性
(2) 找形参和变量声明,将变量和形参作为AO(activation object)属性名,值为undefined
(3) 将实参值和形参统一
(4) 在函数体里面找函数声明,值赋予函数体

function fn(a){

   var a = 123;
   function a() {

   }
   console.log(a)
   var b = function() {

   }
   console.log(b)
   function d(){

   }
   console.log(d)
}


function test(){
    var a = b = 123;
}
test()

window.a ==> undefined
window.b ==> 123
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • js运行三部曲 语法分析 预编译 解释执行 预编译前奏 imply global 暗示全局变量, 即任何变量, 如...
    刘翾阅读 3,584评论 0 1
  • JavaScript 是一门脚本语言,其可以不经过编译而直接运行(这点与 Java 不同,Java 需要编译之后才...
    AshengTan阅读 6,143评论 2 9
  • 什么是预编译 从字面上来理解就是提前编译的意思,也就是说在编译器在开始真正的编译前进行的编译,在iOS开发中也就是...
    张小飞_阅读 6,948评论 2 1
  • C中的预编译宏定义 2009-02-10 作者: infobillows 来源:网络 在将一个C源程序转换为可执行...
    白水灬煮一切阅读 5,553评论 0 5
  • 版权声明:本文为作者原创文章,转载时请注明文章来源,否则视为侵权,并按法律程序处理! “include”相信大家不...
    胖一一阅读 3,704评论 0 1

友情链接更多精彩内容