第一模块
课程名称:直面JavaScript中的30个疑难杂症
章节名称:
- 7-2 一定要知道的变量和函数提升
讲师姓名:公明2020
第二模块
课程内容(概述)
1、js
解释引擎:词法分析->语法分析->语法树
词法分析是将字符流(char stream)转换为记号流(token stream);语法分析成AST
2、js
解析:预编译期(预处理、预解析、预编译)与执行期
预编译预解析,当JavaScript引擎解析脚本时,它会在预编译期对所有声明的变量和丽数进行处理!并且是先预声明量,再预定义函数
3、变量声明提前,值停留在本地;函数是整个代码体提前
第三模块
介绍
在ES6
之前,声明一个变量需要用到var
关键字,用var来声明的变量就存在变量提升的特性
提升过程分析
var a = 1;
function foo() { a = 10; console.log(a); return; function a() {}; }
foo();
console.log(a);
// ------------------------------
var a = 1; // 定义一个全局变量 a
function foo() {
// 首先提升函数声明function a () {}到函数作用域顶端
// 然后function a () {}等同于 var a = function() {};最终形式如下
var a = function () {}; // 定义局部变量 a 并赋值。
a = 10; // 修改局部变量 a 的值,并不会影响全局变量 a
console.log(a); // 打印局部变量 a 的值:10
return;
}
foo();
console.log(a); // 打印全局变量 a 的值:1
第四模块
学习截图