0%

预解析与变量

全局变量:在函数外部的变量,在浏览器被关闭的时候才会被销毁,比较占内存。

局部变量:在函数内部的变量(未被定义的变量除外)/函数的形参,程序执行完就会被销毁。

作用域链:内部函数访问外部函数会一层一层向外查找。(就近原则)

预解析:js引擎会把js里面的所有var和function提升到当前作用域的最前面

​ 变量提升:把变量的声明提升到当前作用域的最前面,不提升赋值操作

​ 函数提升:把函数的声明提升到当前作用域的最前面,不调用函数

var num=10;
function fn(){
    console.log(num);
    var num=20;
    console.log(num);
}
fn();
//相当于执行以下代码
var num;
function fn(){
    var num;
    console.log(num);//undefined
    num=20;
    console.log(num);//20
}
num=10;
fn();