详解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 相关文章推荐
Prototype使用指南之string.js
Jan 10 Javascript
使用jQuery获得内容以及内容的属性
Feb 26 Javascript
基于JavaScript代码实现微信扫一扫下载APP
Dec 30 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
Sep 18 Javascript
移动端点击态处理的三种实现方式
Jan 12 Javascript
浅谈angular4 ng-content 中隐藏的内容
Aug 18 Javascript
nuxt中使用路由守卫的方法步骤
Jan 27 Javascript
js中对象与对象创建方法的各种方法
Feb 27 Javascript
每周一练 之 数据结构与算法(Stack)
Apr 16 Javascript
详解Nuxt.js 实战集锦
Nov 19 Javascript
使用preload预加载页面资源时注意事项
Feb 03 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
Aug 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 mongodb扩展时 需要注意的事项
2013/06/18 PHP
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
Python读取键盘输入的2种方法
2015/06/16 Python
用Python实现斐波那契(Fibonacci)函数
2016/03/25 Python
Python学习入门之区块链详解
2017/07/25 Python
Python文件和流(实例讲解)
2017/09/12 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
python deque模块简单使用代码实例
2020/03/12 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
shell程序中如何注释
2012/01/28 面试题
高职助产应届生自荐信
2013/09/24 职场文书
英文版销售经理个人求职信
2013/11/20 职场文书
最新党员思想汇报
2014/01/01 职场文书
企业办公室岗位职责
2014/03/12 职场文书
党支部公开承诺书
2014/03/28 职场文书
个人校本研修方案
2014/05/26 职场文书
教师四风问题对照检查材料
2014/09/26 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
新闻发布会新闻稿
2015/07/17 职场文书
追悼会家属答谢词
2015/09/29 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js
HttpClient实现文件上传功能
2022/08/14 Java/Android