详解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 实例详细说明教程
Oct 31 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
Dec 05 Javascript
JS弹出层的显示与隐藏示例代码
Dec 27 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
Jul 13 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
Dec 05 Javascript
Perl Substr()函数及函数的应用
Dec 16 Javascript
JavaScript位移运算符(无符号) >>> 三个大于号 的使用方法详解
Mar 31 Javascript
react.js 翻页插件实例代码
Jan 19 Javascript
详解Vue中一种简易路由传参办法
Sep 15 Javascript
AngularJS实现的锚点楼层跳转功能示例
Jan 02 Javascript
微信小程序里引入SVG矢量图标的方法
Sep 20 Javascript
js生成1到100的随机数最简单的实现方法
Feb 07 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 Session存储到Redis的方法
2013/11/04 PHP
PHP变量内存分配问题记录整理
2013/11/27 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
PHP整合PayPal支付
2015/06/11 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
js实现倒计时关键代码
2017/05/05 Javascript
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
Python函数返回值实例分析
2015/06/08 Python
Python实现KNN邻近算法
2021/01/28 Python
Python工程师面试必备25条知识点
2018/01/17 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
如何通过python画loss曲线的方法
2019/06/26 Python
幼儿园安全责任书
2014/04/14 职场文书
篮球赛口号
2014/06/18 职场文书
党员转正大会主持词
2015/07/02 职场文书
聘任书格式及范文
2015/09/21 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python
python for循环赋值问题
2021/06/03 Python
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL