案例1:
var num = 10;
fun();
function fun () {
console.log(num);
var num = 20;
}
// 相当于执行了以下操作
var num;
function fun () {
var num;
console.log(num);
var num = 20;
}
num = 10;
fun();
案例2:
var num = 10;
function fn () {
console.log(num);
var num = 20;
console.log(num);
}
fn();
// 相当于以下代码
var num;
function fn () {
var num;
console.log(num);
num = 20;
console.log(num);
}
num = 10;
fn();
案例3:
var a = 18;
f1();
function f1 () {
var b = 9;
console.log(a);
console.log(b);
var a = '123';
}
// 相当于以下代码
var a;
function f1 () {
var b;
var a;
b = 9
var b = 9;
console.log(a);
console.log(b);
var a = '123';
}
a = 18;
f1();
案例4:
f1();
console.log(c);
console.log(b);
console.log(a);
function f1 () {
var a = b = c = 9;
console.log(a);
console.log(b);
console.log(c);
}
// 相当于是按照以下代码进行执行的
function f1 () {
var a;
a = b = c = 9;
// var a = b = c = 9; 相当于 var a=9,b=9,c=9; b和c直接赋值 没有var声明当全局变量看
console.log(a); // 9
console.log(b); // 9
console.log(c); // 9
}
f1();
console.log(c); // 9
console.log(b); // 9
console.log(a); // 报错 因为a是局部变量