详解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 相关文章推荐
IE6下focus与blur错乱的解决方案
Jul 31 Javascript
如何用js控制frame的隐藏或显示的解决办法
Mar 20 Javascript
javascript实用小函数使用介绍
Nov 11 Javascript
js中的for如何实现foreach中的遍历
May 31 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
Dec 13 Javascript
jQuery排序插件tableSorter使用方法
Feb 10 Javascript
简单实现JavaScript弹幕效果
Aug 27 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
Nov 12 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
Dec 09 Javascript
小程序实现日历左右滑动效果
Oct 21 Javascript
Vue快速实现通用表单验证功能
Dec 05 Javascript
Vue 一键清空表单的实现方法
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
MySql中正则表达式的使用方法描述
2008/07/30 PHP
PHP常用代码大全(新手入门必备)
2010/06/29 PHP
PHP连接MySQL进行增、删、改、查操作
2017/02/19 PHP
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
2013/06/24 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
javascript父、子页面交互技巧总结
2014/08/08 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
Bootstrap图片轮播组件使用实例解析
2016/06/30 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
python发送HTTP请求的方法小结
2015/07/08 Python
Python中的TCP socket写法示例
2018/05/11 Python
django中模板的html自动转意方法
2018/05/27 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
python3 简单实现组合设计模式
2020/07/02 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
python3处理word文档实例分析
2020/12/01 Python
CHARLES & KEITH英国官网:新加坡时尚品牌
2018/07/04 全球购物
作文评语大全
2014/04/23 职场文书
市场拓展计划书
2014/05/03 职场文书
计算机科学技术自荐信
2014/06/12 职场文书
医学生求职信
2014/07/01 职场文书
2014年政工师工作总结
2014/12/18 职场文书
爱国影片观后感
2015/06/18 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript
Python机器学习之逻辑回归
2021/05/11 Python