今天学习了JS预解析–挺有意思–小傻猫就浅记一下
预解析:变量预解析、函数预解析
1 、JS引擎运行js 分为两步: 预解析 代码执行
(1) 、JS引擎会把 里面所有的 var function 提前到当前作用域的最前面
(2)、代码执行 按照代码书写的顺序 从上到下执行
2、预解析分为 变量预解析(变量提升) 和 函数预解析 (函数提升)
(1) 变量提升 所有的变量声明提升到当前作用域最前面 不提升赋值操作
(2) 函数提升 把所有的函数声明提升到当前作用域的最前面 不调用函数
这是学习视屏分析简记,更详细我就没查了。
主要案例分析如下:
<script>
//--------------------------------------------------
//eg 1 预解析案例---->仔细分析-----结果是:undefined
var num = num;
fun();
function fun() {
console.log(num);
var num=20
}
//相当于执行如下
var num; // 1、
function fun() {
// 2、
console.log(num);
var num=20
}
num=10; // 3、
fun(); // 4、
var num // 5、
function fun(){
var num;
console.log(num); //此处的num 是当前函数作用域内的num ,运行此处只定义还未赋值
num=20;
}
num =10;
fun();
//-------------------------------------------------------
//eg 2 预解析案