javascript的运行机制

在了解js的运行机制之前,我们先来了解几个重要的术语。

(一)代码块

js中的代码块是由< script >标签分割的代码块。如下图:

这里写图片描述
1.jpg
js是按照代码块来进行编译和执行的,代码块之间相互独立,变量和方法可以共享。

2.jpg
代码块的编译是按照由上之下的顺序来进行编译和执行。如果var test = “我是代码块一变量”;放在 alert(str);后面,代码块运行的时候因为前面已经出错不会运行到这个位置。


(二)声明函数和定义函数

4.jpg
声明式函数与赋值式函数的区别在于:在JS的预编译期,声明式函数将会先被提取出来,然后才按顺序执行js代码。


(三)预编译期与执行期

预编译期js代码会对本代码块中的所有声明的变量和函数进行处理,但是需要注意的是处理的函数是声明式函数,变量也只是进行了声明但是未赋值。

5.jpg
function Fn(){}已经被预编译,所有 Fn(); 无论写在其前还是其后都会运行。相当于 function Fn(){}已经被预先放置到一个容器里面,函数运行时可以直接从这个容器中提取。
这里要注意的是同名函数后者会覆盖前者。

6.jpg
同名函数会覆盖前面的函数。

6.jpg
代码块是由从上到下的顺序依次编译,代码块一中alert(str)执行的时候存放预编译处理的容器还不存在str。代码块而虽然变量str已被预编译(即初始化)但还没有赋值,所以会出现无定义的结果。
此时代码相当于如下图:
7.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值