此次说明的是var与function的变量提升

    那么先看一段代码

 <script type="text/javascript">

   console.log(test);
  var test = function(){
  console.log(1);
  }
  function test(){
  console.log(2);
  }
  console.log(test); </script>

  执行如上代码会产生什么结果呢?

  正确结果是输出

  ƒ test(){
  console.log(2);
  }

  ƒ (){
  console.log(1);
  }

  为什么不是 1   2 ?  或者  2   1?

  这里需要说一个和变量提升无关的(敲黑板!!!)

  console.log(text)是在控制台输出的text是一个函数体

  因为执行函数是  text()  而输出 text 则是输出text这个函数体,它并没有执行。

-------------------------------------------------------------华丽的分割线--------------------------------------------------------------------------

  好了,那么我们来看一下函数的具体执行顺序。

  我们都知道var与function会进行一个变量的提升,但是当var与function冲突的时候他们提升的一个优先顺序又是怎么样的呢?

 <script type="text/javascript">

     var test;           //实验证明当var和function冲突时计算机会先解析function,由此我们可以假设在冲突时,
                  var会先进行一个提升(也就是排在最上面) 但只提升了var声明的变量,var test具体的内容还在下面(第11行)等待赋值。 function test(){ //function会排在var的下面,这样解析时可以理解为下面的function覆盖了之前的var。
console.log(2);
} console.log(test); //此时解析到的test就是函数体——function(){console.log(2);} 因为之前的var被覆盖了。 test = function(){ //这里再次对test进行一个赋值,又覆盖掉了上面的(第5行)function。(此时之前声明的var test终于等到了他想要的人...)
console.log(1);
} console.log(test); //再次输出的就是已经被覆盖的函数——function(){console.log(1);}

JS变量的提升详解的更多相关文章

  1. 关于JS变量和作用域详解

    ECMAScript 变量: 1.基本类型值(简单数据段) 2.引用类型值(可能由过个值构成的对象) → 保存在内存中的对象 ------ 动态属性: 只能给引用型值动态添加新属性,以便将来使用. - ...

  2. Node.js中环境变量process.env详解

    Node.js中环境变量process.env详解process | Node.js API 文档http://nodejs.cn/api/process.html官方解释:process 对象是一个 ...

  3. js调试工具Console命令详解

    这篇文章主要介绍了js调试工具Console命令详解,需要的朋友可以参考下   一.显示信息的命令 复制代码 代码如下: < !DOCTYPE html> < html> &l ...

  4. js 闭包的用法详解

    一.闭包 实现可重用的局部变量,且保护其不受污染的机制. 外层函数包裹受保护的变量和内层函数. 内层函数专门负责操作外层函数的局部变量. 将内层函数返回到外层函数外部,反复调用. 二.作用域 子函数会 ...

  5. JQ的offset().top与js的offsetTop区别详解

    一.前言 最近在做一个图片懒加载的插件,就纵轴(Y轴)而言,我需要时时获取图片的上偏移量,好判断是否已进入视图区域,而我所理解的是offsetTop应该是跟offset().top一样的,然后陷入了因 ...

  6. 深入MySQL用户自定义变量:使用详解及其使用场景案例

    一.前言 在前段工作中,曾几次收到超级话题积分漏记的用户反馈.通过源码的阅读分析后,发现问题出在高并发分布式场景下的计数器上.计数器的值会影响用户当前行为所获得积分的大小.比如,当用户在某超级话题下连 ...

  7. JQ的offset().top与JS的getBoundingClientRect区别详解,JS获取元素距离视窗顶部可变距离

     壹 ❀ 引 我在 JQ的offset().top与js的offsetTop区别详解 这篇博客中详细分析了JQ方法offset().top与JS属性offsetTop的区别,并得出了一条offset( ...

  8. Python中的变量和作用域详解

    Python中的变量和作用域详解 python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部 ...

  9. Python变量和字符串详解

    Python变量和字符串详解 几个月前,我开始学习个人形象管理,从发型.妆容.服饰到仪表仪态,都开始做全新改造,在塑造个人风格时,最基础的是先了解自己属于哪种风格,然后找到参考对象去模仿,可以是自己欣 ...

随机推荐

  1. spring-petclinic性能调优实战(转)

    1.spring-petclinic介绍 spring-petclinic是spring官方做的一个宠物商店,结合了spring和其他一些框架的最佳实践. 架构如下: 1)前端 Thymeleaf做H ...

  2. windows服务加定时器实现

    首先在项目中添加windows服务 然后双击“MainService.cs”,在上面点右键“打开代码” 以下是我的实例代码 partial class MainService : ServiceBas ...

  3. 大数据: 完全分布式Hadoop集群-HBase安装

            HBase 是一个开源的非关系(NoSQL)的可伸缩性分布式数据库.它是面向列的,并适合于存储超大型松散数据.HBase适合于实时,随机对Big数据进行读写操作的业务环境.   本文基 ...

  4. scrapy爬虫具体案例步骤详细分析

    scrapy爬虫具体案例详细分析 scrapy,它是一个整合了的爬虫框架, 有着非常健全的管理系统. 而且它也是分布式爬虫, 它的管理体系非常复杂. 但是特别高效.用途广泛,主要用于数据挖掘.检测以及 ...

  5. docker笔记(1)

    2019-01-12  13:54:35

  6. sass报 error (Line XX: Invalid GBK character "\xE4") 的解决办法

    在webstorm配置的SASS,插入中文注释报错: cmd.exe /D /C call D:\ProgramFiles\Ruby24-x64\bin\sass.bat --no-cache --u ...

  7. 请为CMyString类型编写构造函数、copy构造函数、析构函数和赋值运算符函数。

    如下为类型CMyString的声明,请为该类型编写构造函数.copy构造函数.析构函数和赋值运算符函数. class CMyString { public: CMyString(const char* ...

  8. js的原型/原型链/构造函数

    js里一切皆对象.有js自己内部的对象,还有用户自定义的对象.所有的对象都是从原型上衍生出来的. 原型本身也是对象,原型链的最高层就是Object. 两个重要的属性:prototype, __prot ...

  9. http://zaojiasys.jianshe99.com 建造师数据泄漏,可以查看全部所有人的信息!

  10. 利用Python进行数据分析(第二版)电子版书籍分享

    资料下载地址: 链接:https://pan.baidu.com/s/1y1C0bJPkSn7Sv6Eq9G5_Ug 提取码:vscu <利用Python进行数据分析(第二版)>高清中文版 ...