1、变量提升:只要变量在代码中进行了声明,无论它在哪个位置上进行声明, js引擎都会将它的声明放在范围作用域的顶部;

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

2、函数提升:只要函数在代码中进行了声明,无论它在哪个位置上进行声明, js引擎都会将它的声明放在范围作用域的顶部;

console.log(b); //function b(){}
function b(){};

从上可以看出,变量或函数声明都会别放到当前作用域的顶部,那么问题来了:如果变量和函数重名那么熟轻熟重呢?谁的优先等级更高呢?

var a;
function a(){};
console.log(a); //function a(){}function b(){};
var b;
console.log(b); //function b(){}var c=1;
function c(){}
console.log(c); //1function d(){};
var d=1;
console.log(d); //1

总结:变量申明和函数申明重名时,

不管二者声明的顺序,函数声明会覆盖变量声明,也就是说,此时a的值是声明的函数function a() {}。

注意:如果在变量声明的同时初始化a,或是之后对a进行赋值,此时a的值是变量的值。

也就是说:a===undefined ? a===函数 :a===变量

转载于:https://www.cnblogs.com/xiexiaobao/p/5652969.html

那些容易忽略的事3-(变量提升和函数提升)相关推荐

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

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

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

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

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

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

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

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

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

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

  6. JS变量提升和函数提升的顺序

    1.变量的提升: 变量名会提升到 '当前作用域' 顶部,此时该变量为undefined,未赋值,赋值是在js原位置. console.log(a); // undefined var a = 10 c ...

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

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

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

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

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

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

最新文章

  1. 利用systemd 实现 tomcat 多实例
  2. github密码格式_如何使用GitHub构建一个简单的网页 (不用框架版本)
  3. 2020-12-07 Halcon初学者知识【2】打开图像和显示
  4. K8S常见错误、原因及处理方法
  5. 这家工作室花三年把塞尔达做进RogueLike里面
  6. 一、Web服务器——Tomcat Servlet学习笔记
  7. thinkphp框架学习笔记(1)
  8. C/C++常量数据类型
  9. 开放 接口 饿了么_饿了么口碑启动生态赋能计划 将在210城开放智慧餐厅业务合作窗口...
  10. 一个迷茫的 大学生自学Linux的开始
  11. 转:计算机核心刊物(非SCI,EI)投稿指南
  12. Spring中Bean的作用域/状态/生命周期
  13. Ubuntu修改默认root及密码
  14. 软件开发报价的计算方法
  15. 拉登是我罩的队_软件需求规格说明书
  16. C/C++ Dev-cpp 5.4.0下载安装包,百度网盘
  17. EC6110M/T-Q21A/C/E-EC6108V9/V9C/V9U/V9A/V9E/V9I/V92/V97-V9C悦me/CA全系列包
  18. R语言使用median函数计算dataframe指定数据列的中位数
  19. 迅雷的php文件_使用迅雷下载.php文件的方法(Picjumbo可用)
  20. 一起来看看华为云的裸金属服务器

热门文章

  1. Visual C++线程同步技术
  2. Nginx之location配置
  3. Hive 之 排序和reduce设置
  4. react android 串口,Maix Bit(K210) 与上位机串口通信
  5. (23)FPGA面试技能提升篇(SSC接口、V35接口)
  6. oracle强制走索引_实验验证:Oracle聚簇因子对索引使用的影响
  7. 数值计算方法(零)——运算的要求+基本算法
  8. GDB 用法和命令介绍
  9. python错误代码40035_[Python]网络爬虫(三):异常的处理和HTTP状态码的分类
  10. 计算机垃圾回收的过程,计算机体系 – 垃圾收集器