1.变量的提升:

变量名会提升到 ‘当前作用域’ 顶部,此时该变量为undefined,未赋值,赋值是在js原位置。

console.log(a);  // undefined
var a = 10
console.log(a)   // 10

在js解析之后:

var a;
console.log(a);  // undefined
a = 10
console.log(a);  //10

2.函数的提升

A.js函数的类别:

  1. 函数声明:function a( ){ };
  2. 函数表达式:var a = function( ){ };
  3. 匿名函数:function( ){ };
  4. 立即执行函数:(function(str){ })(str)

其中:
函数声明存在函数提升
函数表达式等价于变量提升

a();function a(){console.log("a");
};

在解析之后相当于

function a(){console.log("a");
}
a();  // "a"

但是注意函数表达式和上述的函数声明的代码提示方式又不一样了

3.变量提升和函数提升优先级:

A.函数提升优先级高于变量提升

B.当函数声明与变量名相同时,在变量赋值前,函数声明依旧是函数声明,不会被覆盖;当变量赋值后,函数声明被同变量覆盖。

console.log(a);   // ƒ a(){ console.log("函数a"); }
function a(){console.log("函数a");
};
a();              // '函数a'
var a = "变量a";
console.log(a);   // '变量a'
a();              // a is not a function// 输出结果及顺序:
// ƒ a(){ console.log("函数a"); }
// '函数a'
// '变量a'
// a is not a function

函数解析之后相当于:

function a(){console.log("函数a");
};
var a;console.log(a);  // ƒ a(){ console.log("函数a"); }
a();             // '函数a'a = "变量a";     // 此时变量a赋值,函数声明被覆盖console.log(a); // "变量a"
a();            // a is not a function

JS变量提升和函数提升的顺序相关推荐

  1. js中的变量提升和函数提升——精炼版

    javaScript中用var定义变量时存在变量提升(ES6及之后的let/const定义变量时为块级作用域无变量提升,ES6之前js没有块级作用域),比如: console.log(a); // 不 ...

  2. JS函数简单的底层原理 -变量重复声明无效,隐式申明,变量提升,函数提升,以及堆栈内存的变化

    JS函数简单的底层原理 (个人理解): 1. 已经使用var申明且赋值,若再次申明,则第二次申明(不赋值)无效. 2.在同一个作用域下,只要是发生了同名,且变量完成赋值,后者会覆盖前者.存在两个相同的 ...

  3. js 变量提升与函数提升

    规则: 函数的提升优先于变量提升.同名的函数会覆盖同名的函数与变量.同名的变量不会覆盖同名的函数. 示例代码1: <!DOCTYPE html> <html lang="z ...

  4. JS变量(声明)提升和函数声明提升

    目录 一.概念理解 1.变量声明提升 2.函数声明提升(又叫函数提升) 变量提升和函数提升的优先级 小结: 一.概念理解 变量提升:在当前作用于中,js代码自上而下执行之前,浏览器会把所有带var/f ...

  5. js高级第一章--变量提升,函数提升

    js高级第一章–变量提升,函数提升 文章目录 前言 一.什么是js里的提升? 二.js变量提升 三.js函数提升 四.特殊情况 总结 前言 在js中,最基本的声明方式有三种,即:var,let,con ...

  6. JavaScript系列文章:变量提升和函数提升

    第一篇文章中提到了变量的提升,所以今天就来介绍一下变量提升和函数提升.这个知识点可谓是老生常谈了,不过其中有些细节方面博主很想借此机会,好好总结一下. 今天主要介绍以下几点: 1. 变量提升 2. 函 ...

  7. 变量提升以及函数提升

    目录 例子 变量提升 函数提升 当函数提升遇到变量提升 例子 function a(){var b = 10function b(){}console.log(b) } a() 结果是10 funct ...

  8. 函数的自执行,变量提升和函数提升

    其实之前虽然刚开始学习JavaScript的时候经常看到function  add(){}.var add=function(){}.function(){}之类的这种写法,但是具体是什么叫什么却没有 ...

  9. JS中的变量提升和函数提升

    console.log(a); var a = 1 如上面代码中可以看出,由于JS是从上到下一行行的执行,因此很多人看到这一串代码的时候,会认为由于log之前没有定义a,因此会输出underfind, ...

最新文章

  1. 在Ubuntu18.04上安装opencv 3.4.1
  2. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(单色填充、分组颜色填充)实战
  3. 特斯拉2019年第二季度财报出炉:今年有望降低汽车售价
  4. 正则表达式之常用量词
  5. 布局优化之ViewStub、Include、merge使用分析
  6. sqlserver 2000 安装后本机如何连接_3030铝型材框架上的角槽连接件是如何安装固定的?...
  7. sql server 2012序列号密钥
  8. 10-20210308华为海思Hi3516DV300在鸿蒙系统下测试网络(以太网+WIFI)
  9. 爱情 何为爱情(搜集)
  10. unity应用实例——从头撸一个全新的FPS游戏(5)
  11. 大学计算机应用基础绩点,出国留学如何计算GPA平均分
  12. 当你在浏览器地址栏中输入地址并回车的一瞬间到页面展示回来,经历了什么?
  13. 编码、字符集编码、UTF8mb3/UTF8mb4
  14. 计算机毕业设计之家庭理财管理系统的设计与实现
  15. 手把手带你安装PyTorch指定版本嘿!
  16. 测试吃鸡游戏帧数软件,帧数猛提!新旧版本《绝地求生》实测
  17. 前端参数用MD5加密
  18. D53 LeetCode 587.安装栅栏(困难)
  19. 软考中级,哪个通过率高且简单?
  20. 【独家】彩虹代shua最新6.6版本/免授权/后台同步官方版本升级

热门文章

  1. 百度关键词抓取工具_百度网站关键词最蜘蛛快排 - 关于网站网站死链
  2. 65位高校教师接龙晒工资,给打算入高校的博士们参考!
  3. php正则 网址,php正则表达式匹配URL中的域名
  4. win7codecs+2.7.×高清完美设置
  5. Autodesk2012 安装方法(最全密钥及序列号)
  6. 美国科学家团队在半导体芯片上展示分子电子传感器
  7. 网络 网速计算 mbps和mb/s怎么换算结论:8Mbps(8 Million bits) = 1MB/s (1 Million Byte)
  8. Redis 面试全攻略、面试题大集合
  9. JavaSE——Java比较器
  10. 为什么你的网红营销没效果~