预解析案例(经典面试题,简单且详细)
首先看一下这一小段代码:(大家可以先自己思考一下运行结果)
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 ; //注意: var a=b=c=9; 相当于 var a=9; b=9; c=9;
a = b = c = 9; //b和c并没有var,而是直接赋值,就等同于 全局变量!
console.log(a);
console.log(b);
console.log(c);
}
f1();
console.log(c);
console.log(b);
console.log(a);
这里特别注意 var a = b = c = 9;(考点)
注意: var a = b = c = 9; 相当于 var a = 9; b = 9; c = 9;
b 和 c并没有var,而是直接赋值,就等同于 全局变量!
②按照顺序读程序
因为 b , c 是全局变量,可以正常执行;
但是 a 在函数内部,是局部变量,所以 :a is not defined !
③运行结果截图
实验结果就是这样了,题目很简单,但是需要细心。