专栏名称: Fundebug
Fundebug为JavaScript、微信小程序及Node.js开发团队提供专业的线上代码bug监控和智能分析服务。
目录
相关文章推荐
前端大全  ·  从 DeepSeek 看25年前端的一个小趋势 ·  昨天  
歸藏的AI工具箱  ·  终于有给设计师用的 Cursor 了 ·  2 天前  
歸藏的AI工具箱  ·  终于有给设计师用的 Cursor 了 ·  2 天前  
前端大全  ·  前端行情变了,差别真的挺大。。。 ·  3 天前  
前端早读课  ·  【开源】TinyEngine开启新篇章,服务 ... ·  3 天前  
51好读  ›  专栏  ›  Fundebug

JavaScript中的变量提升(Hoisting)

Fundebug  · 公众号  · 前端  · 2018-05-14 10:33

正文

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

  • 原文: What is Hoisting😰😰 in JavaScript

  • 译者: Fundebug

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



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

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



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

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

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



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



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







请到「今天看啥」查看全文