// 案例:以下函数的执行结果是?
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 = 9; b = 9; c = 9; b 和 c 直接 赋值,没有var声明,当全局变量看
// 集体声明 var a = 9, b = 9, c = 9;
console.log(a);
console.log(b);
console.log(c);
}
f1();
console.log(c);
console.log(b);
console.log(a);
在函数内未声明的变量当成全局变量看
因此,最终执行结果是:9,9,9,9,9,报错(最后的console.log(a)执行报错,变量a未定义。)