变量提升和函数声明提升

2016-12-20  本文已影响33人  Hunter_Gu

JS引擎的工作方式:先解析代码,获取所有变量的声明。

    var a = 1;
    var b = 2;
    var c = 3;

等价于

    var a;
    var b;
    var c;
    a = 1;
    b = 2;
    c = 3;

所以

    console.log(a);//undefined 不会报错
    console.log(c);// c is not defined 报错
    var a = 1;
    var b = 2;

等加于:

    var a;
    var b;
    console.log(a);//undefined 不会报错
    console.log(c);// c is not defined 报错
    a = 1;
    b = 2;
   printNum();//有效,控制台打印了1
   function printNum(){
       console.log('1');
   }

1.构造函数

   printNum();//报错 printNum is not a function(...)
   var printNum = new Function("console.log('1');");

2.函数表达式

   printNum();//报错 printNum is not a function(...)
   var printNum = function(){
       console.log(1);
   };
上一篇 下一篇

猜你喜欢

热点阅读