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

相关推荐
xuankuxiaoyao2 分钟前
vue.js 课程自己编写小游戏
前端·javascript·vue.js
兔子零10244 分钟前
当 Codex 成为主力,软件工程的重心已经变了
前端·后端·架构
其实防守也摸鱼5 分钟前
ctfshow--Crypto(crypto1-14)解题步骤
java·开发语言·网络·安全·密码学·ctf·ctfshow
牛奶15 分钟前
网关是怎么当"门卫"的?
前端·后端·负载均衡
天一生水water15 分钟前
VUE3入门
javascript
上海合宙LuatOS18 分钟前
合宙TCP/UDP web测试工具简介
前端·物联网·tcp/ip·udp·luatos
Komore31524 分钟前
java 泛型
java·开发语言·泛型
Hemy0825 分钟前
tauri + rust 创建初始项目
开发语言·后端·rust
Raink老师34 分钟前
用100道题拿下你的算法面试(链表篇-5):删除链表的倒数第 N 个节点
算法·链表·面试
qq_2965532736 分钟前
[特殊字符] 数组中的递增三元组:O(n) 时间高效查找,面试必考!
数据结构·算法·面试·职场和发展·组合模式·柔性数组