1.当在函数的作用域里定义一个和外部变量一样的名称的变量时,变量声明会提升至第一句,但是赋值则不变
var test="hello world";
function(){
alert(test);
var test="hello world again";
}();
上面这段代码会弹出undefined,为什么?其实上面这段代码就相当于:
var test="hello world";
function(){
var test; //变量提升至第一句,赋值不变
alert(test);
test="hello world again";
}();
2.函数声明首先被提升,然后才是变量
console.log(test);
function test(){
//...
}
var test="hello world";
上面代码打印输出的是function test(){//...}这个函数,其实就是相当于:
function test(){} //函数声明先提升
var test; //变量提升,但是赋值则不变
console.log(test);
test="hello world";
以上。
哪里不对还请大神指正,共同学习,一起进步。