f1();
console.log(c);
console.log(b);
console.log(a);
function f1() {
var a = b = c = 9;//这里特别容易理解错,var a = 9,b = 9,c = 9;b和c没有声明变量,当做全局变量用
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;var b = 9;var c = 9;这种是错误的!
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是局部变量
变量提升(变量预解析): 变量的声明会被提升到当前作用域的最上面,变量的赋值不会提升。
函数提升(函数预解析):函数的声明会被提升到当前作用域的最上面,但是不会调用函数。