一、变量提升是指将变量声明提升到它所在作用域的最开始部分

  console.log(a)  //

  为什么会出现以上的结果,是因为js的变量提升,将a变量的声明提升到全局作用域的最上面部分,实际代码如下:

  var a;
  console.log(a)
  a = 1;
  console.log(a)

二、函数提升是指将函数声明提升到它所在作用域的最开始部分

  备注:js创建函数有两种方式,一种是函数声明和函数表达式,只有函数声明才存在函数提升

  var fn = function() {

    console.log('test')

  }

  function fn() {

    console.log('test1')
  }

  console.log(fn())  //  'test'
  
为什么会出现以上结果,是因为js的变量提升,将函数声明提到该函数作用的最上部分,实际代码如下:

  function fn() {

    console.log('test1')
  }

  var fn = function() {

    console.log('test')

  }

  console.log(fn())

js变量提升、函数提升详解的更多相关文章

  1. js 变量、函数提升

    js 变量.函数提升 先简单理解下作用域的概念,方便对变量与函数提升的概念的理解 function foo() { var x = 1; if (x) { var x = 2; } console.l ...

  2. js 变量、函数提升 与js的预编译有关

    参考网址:http://www.codesec.net/view/178491.html 先简单理解下作用域的概念,方便对变量与函数提升的概念的理解 function foo() { var x = ...

  3. JS 变量和函数提升 全局变量和局部变量

    变量提升 1. var a = 10; function test() { a = 100; console.log(a); console.log(this.a); var a; console.l ...

  4. js变量和函数提升的小结

    对于变量和函数一起的提升说法,我比较认同"LittleBear"的说法. 比如: <script> console.log(a)//function a(){} var ...

  5. js变量和函数提升

    写在前面: 变量提升是 声明提升,初始化不会提升,比如说 var a=1; console.log(a); 实际是这样执行(个人理解,仅供参考) var a; console.log(a); a=1; ...

  6. js变量以及其作用域详解

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp73   一.变量的类型  Javascript和Java.C这些语言不同 ...

  7. 关于JavaScript的变量和函数提升

    第一种理解方式:let和const不能被使用,直到他们被声明 对于var定义的变量,解析器会提升其到作用域顶部. // Outputs: undefined console.log(x); var x ...

  8. 提升方法(boosting)详解

    提升方法(boosting)详解 提升方法(boosting)是一种常用的统计学习方法,应用广泛且有效.在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性 ...

  9. JS中的event 对象详解

    JS中的event 对象详解   JS的event对象 Event属性和方法:1. type:事件的类型,如onlick中的click:2. srcElement/target:事件源,就是发生事件的 ...

  10. js中中括号,大括号使用详解

    js中中括号,大括号使用详解 一.总结 一句话总结:{ } 是一个对象,[ ] 是一个数组 1.js大括号{}表示什么意思? 对象 { } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或 ...

随机推荐

  1. vue中的路由传参及跨组件传参

    路由跳转   this.$router.push('/course'); this.$router.push({name: course}); this.$router.go(-1); this.$r ...

  2. RequestContextHolder getHttpServletRequest

    package me.zhengjie.common.utils; import org.springframework.web.context.request.RequestContextHolde ...

  3. linux文件系统与链接

    Linux的文件属性图1 图1   linux的文件属性 ls -lhi -l 长格式 -h 人性化 -i inodo -d 看目录自己的信息 inode 源自于文件系统 分区 平面设计图 格式化 施 ...

  4. Linux下安装mysql(yun方式)

    1.进入下载好的mysql版本 cd /usr/local/mysql 2.解压安装包 tar -xzvf mysql-5.7.11.tar.gz 3.改名 直接改或者 mv  文件名 要改的文件名m ...

  5. StringTokenizer(字符串分隔解析类型)

    java.util.StringTokenizer 功效:将字符串以定界符为界,分析为一个个的token(可理解为单词),定界符可以自己指定.  1.构造函数. 1. StringTokenizer( ...

  6. 使用yum仅下载不安装

    安装工具 yum install yum-utils yum install yum-plugin-downloadonly yum install yumdownloadonlyyum instal ...

  7. Disk Group基础概念与深度解析

  8. Dubbo+zookeeper 基础讲解

    一.dubbo是什么? 1)本质:一个Jar包,一个分布式框架,,一个远程服务调用的分布式框架. 既然是新手教学,肯定很多同学不明白什么是分布式和远程服务调用,为什么要分布式,为什么要远程调用.我简单 ...

  9. MOOC(3)- python发送请求,返回的json数据被转码

    https://www.cnblogs.com/yoyoketang/p/10339210.html 问题:发送post请求,对post请求返回的json数据格式化,但是返回的结果被转码了 json. ...

  10. LINQ之路 6:延迟执行(Deferred Execution) 笔记

    这里刚看的时候不理解. 这个特性在我们通过foreach循环创建查询时会变成一个真正的陷阱.假如我们想要去掉一个字符串里的所有元音字母,我们可能会写出如下的query: IEnumerable< ...