详解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 相关文章推荐
什么是json和jsonp,jQuery json实例详详细说明
Dec 11 Javascript
简单的JavaScript互斥锁分享
Feb 02 Javascript
Egret引擎开发指南之运行项目
Sep 03 Javascript
EasyUI加载完Html内容样式渲染完成后显示
Jul 25 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
Jan 05 Javascript
JS常用知识点整理
Jan 21 Javascript
JS写谷歌浏览器chrome的外挂实例
Jan 11 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
Aug 20 Javascript
Vue2.x通用编辑组件的封装及应用详解
May 28 Javascript
JS 创建对象的模式实例小结
Apr 28 Javascript
echarts浮动显示单位的实现方法示例
Dec 04 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导航下拉菜单的实现如此简单
2013/09/22 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
PHP中的表达式简述
2016/05/29 PHP
破解Session cookie的方法
2006/07/28 Javascript
javascript来定义类的规范小结
2010/11/19 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
2017/05/19 jQuery
新手vue构建单页面应用实例代码
2017/09/18 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
实例Python处理XML文件的方法
2015/08/31 Python
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
python绘制中国大陆人口热力图
2018/11/07 Python
对Python3 序列解包详解
2019/02/16 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
python中的逆序遍历实例
2019/12/25 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
军训自我鉴定
2014/01/22 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
护士优质服务演讲稿
2014/08/26 职场文书
2015年综治维稳工作总结
2015/04/07 职场文书
运动会广播稿200字
2015/08/19 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers