JavaScript中的变量提升(Hoisting)

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

本文采用意译,版权归原作者所有



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

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



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

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

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



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



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

关于Fundebug

Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了10亿+错误事件,付费客户有阳光保险、核桃编程、荔枝FM、掌门1对1、微脉、青团社等众多品牌企业。欢迎大家免费试用

版权声明

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

您的用户遇到BUG了吗?

体验Demo 免费使用