详解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 相关文章推荐
Extjs中使用extend(js继承) 的代码
Mar 15 Javascript
JS操作Cookie写入和读取实例代码
Oct 20 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
Feb 11 Javascript
高性能JavaScript循环语句和条件语句
Jan 20 Javascript
jQuery四种选择器使用及示例
Jun 05 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
Aug 01 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
Jul 17 Javascript
vue将对象新增的属性添加到检测序列的方法
Feb 24 Javascript
微信小程序获取地理位置及经纬度授权代码实例
Sep 18 Javascript
jquery实现简单拖拽效果
Jul 20 jQuery
vue页面跳转实现页面缓存操作
Jul 22 Javascript
JavaScript使用canvas绘制坐标和线
Apr 28 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
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
JQuery 学习技巧总结
2010/05/21 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
详解一些适用于Node.js的命名约定
2019/12/08 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python发送告警邮件脚本
2018/09/17 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
Python中调用其他程序的方式详解
2019/08/06 Python
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
用友笔试题目
2016/10/25 面试题
2014厂务公开实施方案
2014/02/17 职场文书
无毒社区工作方案
2014/05/23 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
群众路线问题查摆对照检查材料
2014/10/04 职场文书
单位工作证明格式模板
2014/10/04 职场文书
总经理岗位职责
2015/02/04 职场文书
地心历险记观后感
2015/06/15 职场文书
Oracle笔记
2021/04/05 Oracle