预编译(xx声明提升),(函数表达式&函数声明),补充typeof

博客介绍了JS运行的三部曲,重点阐述预编译过程,包括函数声明整体提升、变量声明提升,详细说明了预编译前奏及具体步骤,如创建AO对象、找形参和变量声明等,还提及预编译在全局的情况,最后补充了typeof在未定义下不报错返回undefined的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@[TOC](预编译(xx声明提升)(函数表达式&函数声明),补充typeof)

JS运行三部曲

  • 语法分析
  • 预编译
  • 解释执行

预编译

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

在这里插入图片描述

预编译前奏

在这里插入图片描述
在这里插入图片描述

预编译

  1. 创建AO对象
  2. 找形参和变量声明(包括if语句里面的变量声明),将变量和形参名作为AO属性名,值为undefined
  3. 将实参值和形参统一
  4. 在函数体里面找函数声明,值赋予函数体

步骤过程如下:

  1. 找形参和变量声明
    在这里插入图片描述
  2. 实参形参统一 a:1
    在这里插入图片描述
  3. 在函数体里面找函数声明,值赋予函数体

    执行
    在这里插入图片描述
    在这里插入图片描述

补充:

补函数表达式: var a=function(){}
函数声明(提升): function a(){}

在这里插入图片描述

预编译不仅仅发生在函数体 还发生在全局

全局:
1.生成了GO对象 GO{}
2.无形参;仅变量声明 undefined
X 3.无形参实参统一
4.函数声明并赋予函数体

GO === window
在这里插入图片描述
例A:
在这里插入图片描述
在这里插入图片描述
执行
在这里插入图片描述
例B:
在这里插入图片描述
例C:
在这里插入图片描述
在这里插入图片描述
提升例D:
在这里插入图片描述
提升例E:
在这里插入图片描述

补充 typeof

只有一种情况(typeof)未定义下不报错,返回undefined
在这里插入图片描述
例:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值