在ES5中只有全局的作用域和函数作用域,没有块级作用域。这导致在很多场合不合理。如:var temp = new Date();
function go () {
console.log(temp);
if(false){
var temp = 'hello world';
}
}
go(); // undefined上面代码的本意是,if代码块的外部使用外层的temp变量,内部使用内层的temp变量。但是go函数执行后,输出的结果是undefined,原因在于变量提升导致内层的temp变量覆盖了外层的temp变量。还有一种情况,用来计数的循环变量泄露为...
阅读全部