变量提升和函数声明提升

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);
   };
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,376评论 2 17
  • 1.函数声明和函数表达式有什么区别 (*) 区别: 函数声明后面的分号可加可不加,不加也不影响接下来语句的执行,但...
    Sheldon_Yee阅读 3,060评论 0 1
  • 前端07班 王语句JavaScript程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是...
    ea203453e188阅读 4,400评论 0 4
  • 《ijs》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 10,753评论 0 7
  • (浅谈随笔)人生如梦,岁月如梭。躺在发往南方都市的列车上,思绪万千,久久不能平复。看世间万物,无一不随波逐流,时过...
    激扬人生侠客行阅读 1,423评论 0 0