示例:
var a = 10;
function f1(){
var b = 2 * a; // NaN
var a = 20;
var c = a+1; // 21
console.log(b);
console.log(c);
}
f1()
输出 NaN和21,
解析:在f1()中,是存在变量提升的,因为在执行var b=2*a时,会先从当前的作用域中查找关于a的定义,而在函数内,var b=2*a之后还存在了一个var a=20,导致了变量提升,也就是下面这样
var a; //a为undefined
var b=2*a;
var a=20;