函数声明提升与变量提升

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";

以上。
哪里不对还请大神指正,共同学习,一起进步。

上一篇:如何用CorelDraw绘制圆锥平面图


下一篇:前端面试题总结(持续更新。。)