详解javascript中的变量提升和函数提升


Posted in Javascript onMay 24, 2018

1在js中只有两种作用域

a:全局作用域

b:函数作用域

在ES6之前,js是没有块级作用域。

首先来解释一下什么是没有块级作用域?

详解javascript中的变量提升和函数提升

所以此时 是可以打印输出变量a的值。

2:什么是变量提升?

在我们的js中,代码的执行时分两步走的,1、解析 2、一步一步执行

那么变量提升就是变量声明会被提升到作用域的最顶上去,也就是该变量不管是在作用域的哪个地方声明的,都会提升到作作用域的最顶上去。

详解javascript中的变量提升和函数提升

那么上面这种写法其实等价于下面这种写法:

详解javascript中的变量提升和函数提升

看几个例子:

详解javascript中的变量提升和函数提升

把上面的例子稍作改动:

结果就会大不一样,

详解javascript中的变量提升和函数提升

再看一个例子:

详解javascript中的变量提升和函数提升

3:什么是函数提升?

详解javascript中的变量提升和函数提升

输出的结果是:

详解javascript中的变量提升和函数提升

注意:函数声明式,会将函数的声明和定义一起提升到作用域的最顶上去。

如果是这种写法:函数表达式声明的函数

详解javascript中的变量提升和函数提升

例子:

详解javascript中的变量提升和函数提升

输出的结果是:

详解javascript中的变量提升和函数提升

最后的总结:

1:所有的声明都会提升到作用域的最顶上去。

2:同一个变量只会声明一次,其他的会被忽略掉。

3:函数声明的优先级高于变量申明的优先级,并且函数声明和函数定义的部分一起被提升。

Javascript 相关文章推荐
两个Javascript小tip资料
Nov 23 Javascript
JS写的贪吃蛇游戏(个人练习)
Jul 08 Javascript
JS实现随机数生成算法示例代码
Aug 08 Javascript
js获取上传文件大小示例代码
Apr 10 Javascript
IE10中flexigrid无法显示数据的解决方法
Jul 26 Javascript
jQuery简单实现两级下拉菜单效果代码
Sep 15 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
Dec 24 Javascript
flexslider.js实现移动端轮播
Feb 05 Javascript
Vue v2.5 调整和更新不完全问题
Oct 24 Javascript
javascript实现5秒倒计时并跳转功能
Jun 20 Javascript
JS正则表达式验证端口范围(0-65535)
Jan 06 Javascript
深入浅析JavaScript中的in关键字和for-in循环
Apr 20 Javascript
JavaScript轮播停留效果的实现思路
May 24 #Javascript
vue2单元测试环境搭建
May 24 #Javascript
Vue+mui实现图片的本地缓存示例代码
May 24 #Javascript
vue组件name的作用小结
May 23 #Javascript
linux 后台运行node服务指令方法
May 23 #Javascript
node.js部署之启动后台运行forever的方法
May 23 #Javascript
jquery引入外部CDN 加载失败则引入本地jq库
May 23 #jQuery
You might like
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
js 代码优化点滴记录
2012/02/19 Javascript
jquery设置控件位置的方法
2013/08/21 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
2015/03/04 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
JavaScript读写二进制数据的方法详解
2018/09/09 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
Python中表示字符串的三种方法
2017/09/06 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
django2.0扩展用户字段示例
2019/02/13 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
Django ImageFiled上传照片并显示的方法
2019/07/28 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
Python修改列表值问题解决方案
2020/03/06 Python
在线服装零售商:SheIn
2016/07/22 全球购物
美国高街时尚品牌:OASAP
2016/07/24 全球购物
碧欧泉美国官网:Biotherm美国
2016/08/31 全球购物
法语专业求职信
2014/07/20 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书