那些容易忽略的事3-(变量提升和函数提升)
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-(变量提升和函数提升)相关推荐
- JS函数简单的底层原理 -变量重复声明无效,隐式申明,变量提升,函数提升,以及堆栈内存的变化
JS函数简单的底层原理 (个人理解): 1. 已经使用var申明且赋值,若再次申明,则第二次申明(不赋值)无效. 2.在同一个作用域下,只要是发生了同名,且变量完成赋值,后者会覆盖前者.存在两个相同的 ...
- js 变量提升与函数提升
规则: 函数的提升优先于变量提升.同名的函数会覆盖同名的函数与变量.同名的变量不会覆盖同名的函数. 示例代码1: <!DOCTYPE html> <html lang="z ...
- 函数的自执行,变量提升和函数提升
其实之前虽然刚开始学习JavaScript的时候经常看到function add(){}.var add=function(){}.function(){}之类的这种写法,但是具体是什么叫什么却没有 ...
- JavaScript系列文章:变量提升和函数提升
第一篇文章中提到了变量的提升,所以今天就来介绍一下变量提升和函数提升.这个知识点可谓是老生常谈了,不过其中有些细节方面博主很想借此机会,好好总结一下. 今天主要介绍以下几点: 1. 变量提升 2. 函 ...
- 变量提升以及函数提升
目录 例子 变量提升 函数提升 当函数提升遇到变量提升 例子 function a(){var b = 10function b(){}console.log(b) } a() 结果是10 funct ...
- JS变量提升和函数提升的顺序
1.变量的提升: 变量名会提升到 '当前作用域' 顶部,此时该变量为undefined,未赋值,赋值是在js原位置. console.log(a); // undefined var a = 10 c ...
- js中的变量提升和函数提升——精炼版
javaScript中用var定义变量时存在变量提升(ES6及之后的let/const定义变量时为块级作用域无变量提升,ES6之前js没有块级作用域),比如: console.log(a); // 不 ...
- js高级第一章--变量提升,函数提升
js高级第一章–变量提升,函数提升 文章目录 前言 一.什么是js里的提升? 二.js变量提升 三.js函数提升 四.特殊情况 总结 前言 在js中,最基本的声明方式有三种,即:var,let,con ...
- JS中的变量提升和函数提升
console.log(a); var a = 1 如上面代码中可以看出,由于JS是从上到下一行行的执行,因此很多人看到这一串代码的时候,会认为由于log之前没有定义a,因此会输出underfind, ...
最新文章
- 利用systemd 实现 tomcat 多实例
- github密码格式_如何使用GitHub构建一个简单的网页 (不用框架版本)
- 2020-12-07 Halcon初学者知识【2】打开图像和显示
- K8S常见错误、原因及处理方法
- 这家工作室花三年把塞尔达做进RogueLike里面
- 一、Web服务器——Tomcat Servlet学习笔记
- thinkphp框架学习笔记(1)
- C/C++常量数据类型
- 开放 接口 饿了么_饿了么口碑启动生态赋能计划 将在210城开放智慧餐厅业务合作窗口...
- 一个迷茫的 大学生自学Linux的开始
- 转:计算机核心刊物(非SCI,EI)投稿指南
- Spring中Bean的作用域/状态/生命周期
- Ubuntu修改默认root及密码
- 软件开发报价的计算方法
- 拉登是我罩的队_软件需求规格说明书
- C/C++ Dev-cpp 5.4.0下载安装包,百度网盘
- EC6110M/T-Q21A/C/E-EC6108V9/V9C/V9U/V9A/V9E/V9I/V92/V97-V9C悦me/CA全系列包
- R语言使用median函数计算dataframe指定数据列的中位数
- 迅雷的php文件_使用迅雷下载.php文件的方法(Picjumbo可用)
- 一起来看看华为云的裸金属服务器
热门文章
- Visual C++线程同步技术
- Nginx之location配置
- Hive 之 排序和reduce设置
- react android 串口,Maix Bit(K210) 与上位机串口通信
- (23)FPGA面试技能提升篇(SSC接口、V35接口)
- oracle强制走索引_实验验证:Oracle聚簇因子对索引使用的影响
- 数值计算方法(零)——运算的要求+基本算法
- GDB 用法和命令介绍
- python错误代码40035_[Python]网络爬虫(三):异常的处理和HTTP状态码的分类
- 计算机垃圾回收的过程,计算机体系 – 垃圾收集器