详解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 相关文章推荐
对textarea框的代码调试,而且功能上使用非常方便,酷
Jun 30 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
Aug 09 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
Sep 24 Javascript
AngularJS 日期格式化详解
Dec 23 Javascript
jQuery中判断对象是否存在的方法汇总
Feb 24 Javascript
两种js监听滚轮事件的实现方法
May 13 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
May 28 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
Feb 16 Javascript
jquery加载单文件vue组件的方法
Jun 20 jQuery
微信小程序switch组件使用详解
Jan 31 Javascript
jQuery实现鼠标移入显示蒙版效果
Jan 11 jQuery
vue中 v-for循环的用法详解
Feb 19 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中的串行化变量和序列化对象
2006/09/05 PHP
一个php作的文本留言本的例子(四)
2006/10/09 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
PHP函数积累总结
2019/03/19 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
jQuery 1.0.2
2006/10/11 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
javascript实现数独解法
2015/03/14 Javascript
javascript实现checkbox全选的代码
2015/04/30 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
微信小程序实现炫酷的弹出式菜单特效
2019/01/28 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
python基础教程之字典操作详解
2014/03/25 Python
python 性能提升的几种方法
2016/07/15 Python
Python通用循环的构造方法实例分析
2018/12/19 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
使用Python pip怎么升级pip
2020/08/11 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
Python实现简单的2048小游戏
2021/03/01 Python
使用索引有什么好处
2016/07/27 面试题
高中运动会入场词
2014/02/14 职场文书
班主任新年寄语
2014/04/04 职场文书
寒假家长评语大全
2014/04/16 职场文书
汽车维修求职信
2014/06/15 职场文书
我的中国梦口号
2014/06/16 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
三峡人家导游词
2015/01/31 职场文书
学生通报表扬范文
2015/05/04 职场文书
2016新年问候语大全
2015/11/11 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python
用Python生成会跳舞的美女
2022/01/18 Python