JavaScript中的变量提升(Hoisting)

译者按: let和var对于变量提升的影响不同。

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。

提升(Hoisting)并不是指函数或则变量移动到最顶部。实际上,它们并没有移动到任何其它地方去。

对于变量声明,JavaScript引擎会在初始化变量的时候赋值为“undefined”。如下图所示,在第6行设置断点来查看:

有没有注意到变量showme的值最开始是undefined。当JavaScript引擎执行完第6行代码,showme的值会更新为hoisting

来看看使用let和var声明的变量如何做提升的

如果使用let关键字声明变量,那么在声明之前的位置访问该变量,都会报错。

但是,对于使用var声明的变量,则不会报错。

译者注:从安全角度考虑,推荐使用要求更加严格的let来声明变量。如果使用var声明,测试不到位的话,可能会在运行时触发一些莫名其妙的bug。想要更保险,推荐使用Fundebug做线上监控。

版权声明:
转载时请注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2018/05/14/what_is_hoisting_in_js/

您的用户遇到BUG了吗?

体验Demo 免费使用

.copyright * { box-sizing: border-box; }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

8种常见的Java不规范代码

在工作上,我最近对一个现有的Java项目代码进行了清理。完成之后,我发现了一些反复出现的不规范代码。所以,我把它们整理成了一个列表出来分享给我的同行希望能引起注...

561
来自专栏deepcc

Cookie 基本操作

3296
来自专栏java一日一条

8种常见的Java不规范代码

在工作上,我最近对一个现有的Java项目代码进行了清理。完成之后,我发现了一些反复出现的不规范代码。所以,我把它们整理成了一个列表出来分享给我的同行希望能引起注...

401
来自专栏小詹同学

发爬虫和反反爬虫(下篇)

首先我们都知道要爬取网站图片有简单的几个步骤:获取网页源码、审阅元素寻找所需信息、下载并保存到指定位置。

1052
来自专栏逍遥剑客的游戏开发

Tiled源码分析(三): Undo/Redo实现

2757
来自专栏贺贺的前端工程师之路

Angular2 之 时间的教训 & 错误

下面开始,时间的教训的记录,如果同样的错误我犯过不是第一次,那么我也会记录下来,我到时要看看,自己是不是会在同一个地方摔倒N次?

664
来自专栏枕边书

搭建自己的PHP框架心得(一)

前言 说到写PHP的MVC框架,大家想到的第一个词--“造轮子”,是的,一个还没有深厚功力的程序员,写出的PHP框架肯定不如那些出自大神们之手、经过时间和各种项...

2087
来自专栏Fundebug

JavaScript中的变量提升(Hoisting)

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。

1246
来自专栏xingoo, 一个梦想做发明家的程序员

【插件开发】—— 14 Site is incorrect!编辑器启动报错!

最近在弄编辑器的时候出现了一个十分尴尬的错误!这里收录一下:   BUG如下图所示: ?   目测堆栈,与自己开发的代码无关。完全是Eclipse自己初始...

1946
来自专栏自动化测试实战

接口测试基础——第8篇 requests模块

3066

扫码关注云+社区