共计 642 个字符,预计需要花费 2 分钟才能阅读完成。
浏览器中 JavaScript 执行机制
一、JavaScript 变量提升,执行顺序
showName()
console.log(myname)
function showName() {console.log('函数 showName 被执行');
}
以上代码执行结果,有以下三个结论:
- 在执行过程中,若使用了未声明的变量,那么 JavaScript 执行会报错。
- 在一个变量定义之前使用它,不会出错,且函数能正确执行。
- 在一个函数定义之前使用它,不会出错且函数能正确执行。
变量提升:是指在 JavaScript 代码执行过程中,JavaScript 引擎把变量的声明部分和函数的声明部分提升到代码开头的“行为”。变量被提升后,会给变量设置默认值,这个默认值就是我们熟悉的 undefined。
JavaScript 代码的执行流程
实际上变量和函数声明在代码里的位置是不会改变的,而且是在编译阶段被 JavaScript 引擎放入内存中。一段 JavaScript 代码在执行之前需要被 JavaScript 引擎编译,编译完成之后,才会进入执行阶段。大致流程你可以参考下图:
编译阶段:经过编译后会生成 执行上下文 和可执行代码
执行上下文是 JavaScript 执行一段代码时的运行环境,此过程存在变量环境对象,JavaScript 引擎会把声明以外的代码编译为字节码。
二、JavaScript 代码调用栈
调用栈:用来管理函数调用关系的一种数据结构,后进先出。
JavaScript 执行多个上下文时,JavaScript 引擎通过栈的数据结构来管理。
正文完
发表至: javascript
2019-09-15