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 的编译结果是不一样的

相关推荐
Zyx20073 分钟前
前端直连大模型:用原生 JavaScript 调用 DeepSeek API
javascript·deepseek
panda49193 分钟前
css主流布局
前端·css
一千柯橘4 分钟前
vite 下使用 Module Federation
前端
e***58238 分钟前
TypeScript 与后端开发Node.js
javascript·typescript·node.js
风止何安啊9 分钟前
快 2026 年了,谁还在为 this 挠头?看完这篇让你彻底从懵圈到精通
前端·javascript·node.js
好好研究13 分钟前
SpringMVC框架 - 异常处理
java·开发语言·spring·mvc
烟袅18 分钟前
从零开始:前端如何通过 `fetch` 调用 大模型(详解)
前端·javascript·llm
随风飘的云18 分钟前
synchronized 的底层原理及优化机制
面试
songroom23 分钟前
Rust: 量化策略回测与简易线程池构建(MPMC)
开发语言·后端·rust
摇滚侠29 分钟前
Vue 项目实战《尚医通》,完成确定挂号业务,笔记46
java·开发语言·javascript·vue.js·笔记