谈一谈js中的预编译

本文探讨JavaScript作为解析型语言的运行过程,主要关注预编译阶段,包括语法分析、预编译的GO和AO对象,以及解释执行。预编译会进行变量提升和函数声明,而在解释执行阶段,全局和函数作用域内的代码会被解析和执行。文章还包含实例分析以加深理解。
摘要由CSDN通过智能技术生成

预编译

javascript是一个解析型语言。作为解析型语言,它的运行过程主要分为三步:1、语法分析;2、预编译;3、解释执行。

一、语法分析

作用:全局检查是否有语法错误。js会对全部的脚本代码进行解析,通过js引擎检查你的代码是否存在错误,若存在错误就会抛出一个错误;或者语言分析完成。学会这个可以在调试代码的时候,更快地帮助我们找到错误。在浏览器控制台输出红色的错误信息,就是语言分析完成的。

二、预编译
GO对象

1、创建GO对象。
2、全局var 声明的变量提升(只有var声明的变量才会提升;省略var的变量,作用是赋值,没有变量提升)。 赋值:undefined
3、函数声明,并赋值 函数引用。

AO对象

1、创建AO对象。
2、提升形参   赋值:undefined
3、提升方法体中var声明的变量  赋值:undefined
4、形参实参相统一(给形参赋值)。
5、查找方法体中声明的函数。 提升函数并赋值 函数引用

三、解释执行
GO对象

解析执行全局代码。可能会往GO中新增属性,也可能对GO中属性重新赋值。GO中属性

AO对象

函数执行完毕 AO对象销毁(闭包中保留)
注意事项:
1、只有存在作用域时候,才会用预编译;
2、ES5之前&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值