预解析: 提前解析代码
做的事情: 把变量的声明提前了--->提前到当前所在的作用域的上面
同样也可以把函数的声明提前--->提前到当前所在的作用域的前面
var num;
console.log(num);
num = 10;
function f1() {
//var num;
console.log(num);// undefined
var num = 50;
// console.log(num)
}
f1();
console.log(num);//报错 局部变量, 外部不能访问
console.log(num);//undefined
var num = 100;
function f1() {
console.log(num);//100
}
f1();
function f1() {
console.log("我是f1")
}
function f1() {
console.log("我是f2")
}
f1();
f1();
f1();//报错
var f1 = function () {
console.log("我是f1")
}//函数的表达式
console.log(a);//undefined
var a = 20;
function f1() {
var a;
console.log(a);//undefined
var a = 10;
}
f1();
console.log(a);//20
var a;
function a() {
console.log("aaaa");//不会输出
}
console.log(a);//函数本身
a = 1;
console.log(a);//1
var a;
a = 18;
function f1() {
var b;
var a;
b = 9;
console.log(a);//undefined
console.log(b);//9
a = "123";
}
f1();
function f1() {
// var a = b = c = 9;
var a;
a = 9;
b = 9;
c = 9;
console.log(a);//9
console.log(b);//9
console.log(c);//9
}
f1();
// console.log(a);
console.log(b); //9
console.log(c); //9
console.log(a);// 报错
function f1() {
console.log("哈哈")
};
f1();