JavaScript对变量的提升声明是大家都知道的,即:无论在函数内部的任何地方声明了一个新的变量,相当于在函数最开始就声明了.
例子:
function func_with_var(){
if(b === undefined){
console.log("已经声明b");
}
else{
console.log("尚未声明b");
}
var b;
}
function func_without_var(){
if(b === undefined){
console.log("已经声明b");
}
else{
console.log("尚未声明b");
}
}
扩展一小下,当function里面出现return语句时,其并不能打算对变量声明提升的限制,如下函数与a效果相同
function func_with_return(){
if(b === undefined){
console.log("已经声明b");
}
else{
console.log("尚未声明b");
}
return;
var b;
}
三个函数的运行结果如下:
func_with_var();
已经声明b
func_without_var();
尚未声明b
func_with_return();
已经声明b