详解javascript中的变量提升和函数提升

作者:歆冉 时间:2024-06-07 15:53:28 

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:函数声明的优先级高于变量申明的优先级,并且函数声明和函数定义的部分一起被提升。

来源:http://blog.51cto.com/11871779/2119667

标签:js,变量提升,函数提升
0
投稿

猜你喜欢

  • Python如何设置指定窗口为前台活动窗口

    2022-01-22 02:20:02
  • 如何确定Oracle数据库表重复的记录

    2010-07-26 13:23:00
  • 详解Java使用JDBC连接MySQL数据库

    2024-01-24 18:21:06
  • python中numpy的矩阵、多维数组的用法

    2021-01-26 04:25:43
  • Python基于pyCUDA实现GPU加速并行计算功能入门教程

    2021-11-01 08:24:58
  • MySQL编码不一致可能引起的一些问题

    2024-01-21 17:26:15
  • python自动化测试selenium定位frame及iframe示例

    2023-01-08 16:25:28
  • Python序列对象与String类型内置方法详解

    2023-09-22 13:25:18
  • 关于Python与Golang语言的对比分析

    2023-03-10 18:54:06
  • 某一公司的ASP面试题

    2011-09-15 20:50:20
  • python3.6的venv模块使用详解

    2023-05-11 12:13:41
  • Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环

    2024-01-26 18:49:00
  • Python常见字典内建函数用法示例

    2022-08-07 08:59:23
  • python轮询机制控制led实例

    2023-12-12 01:39:00
  • YOLOv5车牌识别实战教程(八)Web应用与API开发

    2022-12-29 23:44:22
  • 实现像php一样方便的go ORM数据库操作示例详解

    2024-05-05 09:27:25
  • 详解Python自动化中这八大元素定位

    2023-06-04 18:25:34
  • mac系统安装Python3初体验

    2023-11-27 07:33:16
  • layDate插件设置开始和结束时间

    2024-05-03 15:05:03
  • python使用matplotlib绘制图片时x轴的刻度处理

    2022-05-05 01:38:56
  • asp之家 网络编程 m.aspxhome.com