js预编译

本文深入探讨JavaScript的预编译阶段,包括作用域创建、AO对象的生成、形参和实参的处理以及函数声明如何覆盖变量声明。预编译阶段主要任务是创建全局和函数作用域,形成AO对象,实参和形参匹配,并且函数声明优先于变量声明。注意,预编译阶段结束后,实际值的赋值将在后续的JS解释执行阶段进行。
摘要由CSDN通过智能技术生成

 预编译  优先级: 函数声明>实参>形参

      预编译阶段就是作用域的创建阶段(分为全局作用域和函数作用域)

      js的变量对象在函数作用域创建阶段也叫  AO对象 (是我们访问不到的,是供js引擎访问的)

        AO对象在函数作用域创建阶段坐了哪些事情?(预编译阶段,不包括预编译执行完成后的js解释阶段(比如具体变量赋值))

          1、创建AO对象

          2、找形参和变量声明 来作为oa对象的属性,值为undefined;

          3、实参和形参相统一

          4、找函数声明,并且函数声明的名称和变量的名称一致,函数声明会覆盖变量声明(此变量声明指实参赋值的变量声明)

 

 切记预编译阶段止步于第四步找函数声明并覆盖变量声明。在之后的js解释执行代码阶段,实际值还要看变量赋值的上下文中变量赋值的具体位置;

再看下图  也有清晰的注释:

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值