JS ----- 底层原理
什么是JS
JavaScript是一种基于对象的动态、弱类型脚本语言(简称JS),是一种解释型语言,和其他的编程语言不同,如java/C++等编译型语言,这些语言在代码执行前会进行通篇编译,先编译成字节码(机器码)。然后在执行。而JS不是这样做的,JS是不需要编译成中间码,而是可以直接在浏览器中运行,JS运行过程可分为两个阶段,编译和执行。(可参考你不知道的JS这本书),当JS控制器转到一段可执行的代码时(这段可执行代码就是编译阶段生成的),会创建与之对应的执行上下文(Excution Context简称EC)。执行上下文可以理解为执行环境(执行上下文只能由JS解释器创建,也只能由JS解释器使用,用户是不可以操作该"对象"的)。
JS 的底层运行原理
- 每调用一个函数就会生成一个执行环境(俗称执行上下文),执行上下文环境数量没有限制
- 每调用一个函数就会生成一个执行环境(俗称执行上下文),执行上下文环境数量没有限制
- 单线程
- 同步执行,只有栈顶的上下文处于执行中,其他上下文需要等待
- 每次某个函数被调用,就会有个新的执行上下文为其创建,即使是调用的自身函数,也是如此。
JS中的执行环境分为三类:
- 全局环境:当JS引擎进入一个代码块时,如遇到
<script>xxx</script>
标签,就是进入一个全局执行环境 - 函数环境:当一个函数被调用时,在函数内部就形成了一个函数执行环境
eval()
:把字符串单做JS代码执行,不推荐使用