课程名称:直面JavaScript中的30个疑难杂症
章节名称:
讲师姓名:公明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
学习截图