详解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 快捷键设置实现代码
Mar 13 Javascript
javascript强大的日期函数代码分享
Sep 04 Javascript
jQuery圆形统计图开发实例
Jan 04 Javascript
关于JavaScript作用域你想知道的一切
Feb 04 Javascript
jQuery过滤选择器经典应用
Aug 18 Javascript
JS表单数据验证的正则表达式(常用)
Feb 18 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 Javascript
微信小程序button组件使用详解
Jan 31 Javascript
浅析vue.js数组的变异方法
Jun 30 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
Jul 25 Javascript
JS数组实现分类统计实例代码
Sep 30 Javascript
微信小程序和百度的语音识别接口详解
May 06 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查询搜索引擎排名位置的代码
2010/01/05 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
Python中装饰器学习总结
2018/02/10 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
会议接待欢迎词
2014/01/12 职场文书
音乐教学反思
2014/02/02 职场文书
网上卖盒饭创业计划书范文
2014/02/07 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
周一问候语大全
2015/11/10 职场文书
大学班干部竞选稿
2015/11/20 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android