Es6的let实现原理——代码解析

本质利用的是JS闭包

原始es6代码:

js 复制代码
var funcs = []; 
for (let i = 0; i < 10; i++) { 
  funcs[i] = function () { 
    console.log(i); 
  };
}
funcs[0](); // 0 

babel 编译之后的 es5 代码(polyfill):

js 复制代码
var funcs = [];

var _loop = function _loop(i) {
  funcs[i] = function () {
    console.log(i);
  };
};

for (var i = 0; i < 10; i++) {
  _loop(i);
}
funcs[0](); // 0

其实我们根据 babel编译之后的结果可以看得出来let是借助闭包和函数作用域来实现块级作用域的效果的 在不同的情况下 let 的编译结果是不一样的

相关推荐
RickeyBoy1 天前
SwiftUI 如何实现 Infinite Scroll?
ios·面试
xiaoye37081 天前
Java 自动装箱 / 拆箱 原理详解
java·开发语言
ZTLJQ1 天前
数据的基石:Python中关系型数据库完全解析
开发语言·数据库·python
夏霞1 天前
c# signlar 客户端传递参数给服务端配置方法
开发语言·c#
迷藏4941 天前
**发散创新:基于 Rust的开源权限管理系统设计与实战**在现代软件架构中,**权限控制**早已不
java·开发语言·rust·开源
升鲜宝供应链及收银系统源代码服务1 天前
《IntelliJ + Claude Code + Gemini + ChatGPT 实战配置手册升鲜宝》
java·前端·数据库·chatgpt·供应链系统·生鲜配送
i建模1 天前
将Edge浏览器的标签页从顶部水平排列**移至左侧垂直侧边栏
前端·edge
2301_818419011 天前
C++中的解释器模式变体
开发语言·c++·算法
跟着珅聪学java1 天前
js编写中文转unicode 教程
前端·javascript·数据库
英俊潇洒美少年1 天前
Vue3 深入响应式系统
前端·javascript·vue.js