变量提升和函数提升:

   就是将变量声明或者函数全部代码提升到当前作用域(全局作用域或函数作用域)最开始的部分。

JavaScript中函数域为最小域范围;for循环、while循环、if语句、switch语句的“{}”不是作用域。

一.变量提升:
   使用var声明的变量,会提前到当前作用域的开始的位置,被声明。原位赋值。

1.所指的形式:var  a = "提升";(必须有关键字“var”)

2.提升的方式:将“var a”,提升到当前作用域的顶部,a = "提升",在原型定义的位置。

3.具体代码:

eg:

 1. console.log( a)  ----> undefined
   var a = 10;
      console.log(a)  ---->   10
 2.console.log(a);
  var a = "我是全局中的变量";
  console.log(a);
  function fn(){
    console.log(interiorA);
    var interiorA = "我是函数内的变量";
    console.log(interiorA)
  }
  fn();
      ↓↓↓↓↓↓↓↓
  变量提升执行顺序
  var a ; //变量提升,此时只是声明,并没有赋值
  console.log(a);    // undefined
  a = "我是全局中的变量"  //  此时才赋值
  console.log(a);        //我是全局中的变量
 
  function fn() {
    var interiorA;     //变量提升,函数作用域范围内
    console.log(interiorA);    //undefined
    interiorA = "我是函数内的变量"  //此时对局部变量进行赋值
    console.log(interiorA)      //我是函数内的变量
  }

 二.函数提升

   1.函数提升所指的形式:function fn(){......}(必须是函数声明的形式,不能是函数表达式的形式)。 

   2.函数提升的方式:将“function fn(){......}”整个函数声明代码块提升到当前作用域的顶部,

      原先位置以不存在该代码。

   3.所有使用function声明的函数,都会整体提升,只要当前作用域内声明了数

      在任何位置都可以使用,赋值式创建函数,提升的声明,不是。

      当函数和变量重名,变量的提升更高,函数的提升在变量的下面,

      导致值函数生效

    var a;

    function a(){}

    console.log(a);

    a = 10;

eg:  

  function fn(){

     console.log(a);
      var a = "hello";
      console,log(a);
      function a(){1}
      console.log(a);
      a = "world";
      console.log(a);
      function a(){2}
      cosole.log(a)
  }

  上式提升后等同于下式  

  function fn(){
      var a;            变量提升最高;
      function a(){1};       函数提升到变量下面;
      function a(){2};
      console.log(a);       f2
     a = "hello"
      console.log(a);       hello
      console.log(a);       hello
      a = "world"
      console.log(a)        world
      console.log(a)        world
  }

   

js中的函数提升和变量提升的更多相关文章

  1. js中避免函数名和变量名跟别人冲突

    待补充 .... 参考链接: http://blog.csdn.net/formyqianduan/article/details/52118690

  2. js 函数提升和变量提升

    总结: 函数提升比变量提升优先级高! 词法分析 词法分析方法: js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数说明 具体步骤如下: 函数在运行 ...

  3. JS 函数作用域及变量提升那些事!

    虽然看了多次js函数作用域及变量提升的理论知识,但小编也是一知半解~ 这几天做了几道js小题,对这部分进行了从新的理解,还是有所收获的~ 主要参考书籍: <你不知道的JavaScript(上卷) ...

  4. JS _函数作用域及变量提升

    虽然看了多次js函数作用域及变量提升的理论知识,但也是一知半解~ 这几天做了几道js小题,对这部分进行了从新的理解,还是有所收获的~ 主要参考书籍: <你不知道的JavaScript(上卷)&g ...

  5. Javascript中函数提升和变量提升

    词法分析 词法分析方法: js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数说明 具体步骤如下: 函数在运行的瞬间,生成一个活动对象(Active ...

  6. js函数声明提升与变量提升

    变量提升 变量提升: 在指定作用域里,从代码顺序上看是变量先使用后声明,但运行时变量的 “可访问性” 提升到当前作用域的顶部,其值为 undefined ,没有 “可用性”. alert(a); // ...

  7. js中的全局变量和静态变量的使用, js 的调试?- 如果js出错, js引擎 就会停止, 这会 导致 后面的 html中 refer 该函数时, 会报错 函数为定义!!

    效果里面的函数, 如show, hide,slideDown等, 这些都叫 "效果"函数, 但是里面可以包含动画, 也可以 不包含动画. 动画,是指 元素 的内容 是 逐渐 显示/ ...

  8. js中的函数应用

    js中的函数应用 什么是函数,函数的概念 函数就像一个黑匣子,里面的东西你都不知道,但是你提供一些材料放进去,他可以制造出你需要的东西; 可以让多个一样的功能封装组合起来,然后想执行几次就执行几次 函 ...

  9. JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype

    一)函数 A)JS中的函数的定义格式: function add(a,b) { var sum = a+b; document.write("两个数的和是:" + sum); // ...

  10. JS中的函数、Bom、DOM及JS事件

    本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的 ...

随机推荐

  1. Invoke-customs are only supported starting with Android O (--min-api 26) Message{kind=ERROR,……

    https://www.jianshu.com/p/434928537a90 在我使用构建版本gradle 26但是在将buildtoolsversion更改为27之后,就像这个图像     错误:e ...

  2. Intent Flags

    Activity都是运行在任务栈里面,但如果要从广播接受者BordercastReceiver或者服务Service去启动一个Activity,必须为当前Activity创建一个新的任务栈才能正常显示 ...

  3. 22 Flutter仿京东商城项目 inappbrowser 加载商品详情、保持页面状态、以及实现属性筛选业务逻辑

    加群452892873 下载对应21可文件,运行方法,建好项目,直接替换lib目录,在往pubspec.yaml添加上一下扩展. cupertino_icons: ^0.1.2 flutter_swi ...

  4. PostgreSQL 之 CREATE FUNCTION

    官方文档 语法: CREATE [ OR REPLACE ] FUNCTION name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } d ...

  5. 怎样获取java新IO的Path文件大小

    import org.junit.Test; import java.io.IOException; import java.nio.file.Files; import java.nio.file. ...

  6. JAVA 基础编程练习题33 【程序 33 杨辉三角】

    33 [程序 33 杨辉三角] 题目:打印出杨辉三角形(要求打印出 10 行如下图) 程序分析: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 package ...

  7. RocketMQ搭建-WEB集成RMQ-SE集成RMQ

    坑一 https://blog.csdn.net/c_yang13/article/details/76836753 JAVAWEB集成RMQ https://www.cnblogs.com/yun9 ...

  8. PHP实现发送模板消息(微信公众号版)

    以下为开发步骤: 1.微信公众号为服务号且开通微信认证(其他类型账号不能发送) 2.ip白名单设置你的服务器ip(用于获取access_token) 3.网页授权你的域名(用于获取用户的openid) ...

  9. VC程序运行时间测试函数

    VC程序运行时间测试函数 介绍 我们在衡量一个函数运行时间,或者判断一个算法的时间效率,或者在程序中我们需要一个定时器,定时执行一个特定的操作,比如在多媒体中,比如在游戏中等,都会用到时间函数.还比如 ...

  10. docker 运行pptpd服务器

      今天试着用docker搭了一下pptpd服务器,感觉清爽不少(当然是踩坑之后的啦),特此记录.   使用的镜像: mmontagna/docker-vpn-pptp   由于是现成的镜像,所以我们 ...