javascript高级进阶之解析和执行过程介绍

JavaScritpt解析和执行过程介绍

javascipt是一种描述型的脚本语言,是一种解析语言,由浏览器动态解析,不同种类浏览器不同版本的浏览器对js的解析有着微小的差别,不同浏览器js解析引擎效率也有高低。
js的执行过程分为两大部分:
第一部分,解析过程,也称预编译期。主要工作就是对js代码中声明的所有变量进行预处理。需要注意的是,在此进行处理的仅是声明函数,而对于变量的处理仅是声明,并开辟出一块内存空间,不进行赋值操作。
第二部分,执行过程,在执行过程中,浏览器的js引擎对每块代码进行顺序执行,如果有外部引用的js,且js有相互关联,此时就要注意,不同的js的引入顺序,如果声明代码块在调用代码块后调用则将不会达到预期效果。
总的来说,js的执行分为两部分,解析过程和执行过程。解析时按照代码代码块,一段一段进行解析,执行时按照代码块顺序逐行执行,解析一个代码块执行一个代码块。
因为是解释性语言,所以js如果在解析过程中有错误,则不会提示,也可以理解为js不会出现编译错误,但如果出现了运行时错误。

var ad;//预处理阶段处理
 ad = 1;//运行时赋值
 function text(){
   
	console.log(1);
 if(ad){
   //boolea
 }
}

为什么变量是在运行时赋值的而不是在预处理阶段进行赋值?

因为javascript的变量的数据类型不是固定的,要根据当前运行的情况的判定。

全局预处理阶段

预处理:创建一个词法环境(LexicalEnvironment,在后面简写成LE),扫描JS中的用声明的方式声明函数,用var定义的变量并将他们加到预处理阶段中的词法环境中去。
预处理阶段先读取代码块,不是一行一行的解析执行定义的方法和var定义的变量,会放到一个(不同的环境,会有对应语法的环境)词法环境中

var a = 1;
var b;
c = 3;
function d(){
   
console.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值