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

相关推荐
晚霞的不甘16 小时前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d
小迷糊的学习记录16 小时前
0.1 + 0.2 不等于 0.3
前端·javascript·面试
程序员敲代码吗16 小时前
面试中sessionStorage问题引发深度探讨
面试·职场和发展
空&白17 小时前
vue暗黑模式
javascript·vue.js
执风挽^17 小时前
Python基础编程题2
开发语言·python·算法·visual studio code
梦帮科技17 小时前
Node.js配置生成器CLI工具开发实战
前端·人工智能·windows·前端框架·node.js·json
Z9fish17 小时前
sse哈工大C语言编程练习20
c语言·开发语言·算法
VT.馒头18 小时前
【力扣】2695. 包装数组
前端·javascript·算法·leetcode·职场和发展·typescript
萧鼎18 小时前
Python 包管理的“超音速”革命:全面上手 uv 工具链
开发语言·python·uv
css趣多多18 小时前
一个UI内置组件el-scrollbar
前端·javascript·vue.js