博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS基础——变量提升
阅读量:5823 次
发布时间:2019-06-18

本文共 515 字,大约阅读时间需要 1 分钟。

变量提升

在js中,通过var声明的变量,无论在何处申明,都会被视为声明于所在函数的顶部(如果不在函数内,则视为全局作用域顶部)。申明会提升,初始化不会提升。

例如:当我们单独执行console.log(a)时,代码会产生异常,因为a没有定义。
clipboard.png
但是在后面加上var a = 123,执行结果输出undefined
clipboard.png
js执行分两个步骤:

  • 编译(词法解释/预解释)
  • 执行

这里起作用的就是变量提升,编译后的代码相当于

clipboard.png
为什么输出的不是123呢?因为初始化不会提升,所以a = '123' 不会提升至顶部。
注意的是,这里的声明都是通过var申明的。使用letconst声明的变量,在达到声明处之前都是无法访问的,试图访问会导致一个引用错误。
clipboard.png
letconst必需先申明再引用,并且只会作用于当前代码块内部(函数内部、大括号内部、for循环内部)。通常建议变量申明优先使用const,然后再使用let

函数提升

function函数声明会被提升到当前作用域 的最前面。例如,在下面例子中test函数被提升至顶部:

clipboard.png
但对于通过表达式申明的函数不会提升,如下:
clipboard.png
test变量提升了,但初始化不会提升。

资料:《深入理解ES6》第一章

转载地址:http://ahbdx.baihongyu.com/

你可能感兴趣的文章
Eclipse:Failed to load the JNI shared library
查看>>
【Stimulsoft Reports PHP教程】使用SQL数据源
查看>>
SpringMVC后台token防重复提交解决方案
查看>>
rsync备份工具
查看>>
这可能是最详细的一线大厂Mysql面试题详解了
查看>>
基于Android 虹软人脸、人证对比,活体检测
查看>>
8分钟可以完成一个小程序?而且是一个11岁小姑娘完成的.......
查看>>
Box连结共享造成百家企业档案摊在太阳下
查看>>
VMware Workstation9 下安装 CentOS6.9 32位系统( 安装图文教程 )
查看>>
闲着无聊之StopWatch
查看>>
git学习笔记--创建和合并分支
查看>>
linux云服务器硬盘分区及挂载
查看>>
90后黑客以1分钱拍迪斯尼门票后转卖 1周赚50万
查看>>
FFmpeg Maintainer赵军:FFmpeg关键组件与硬件加速
查看>>
PopupWindow(三)
查看>>
查询表给了那角色权限
查看>>
根据关键字获取properties文件对应属性
查看>>
Swift中类的使用
查看>>
一个简单的AJAX实现
查看>>
TOTP 基于时间的动态密码算法
查看>>