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

相关推荐
阿珊和她的猫18 分钟前
React 路由:构建单页面应用的导航系统
前端·react.js·状态模式
skywalker_1120 分钟前
Java中异常
java·开发语言·异常
2501_9403152623 分钟前
航电oj:首字母变大写
开发语言·c++·算法
没有天赋那就反复26 分钟前
JAVA 静态方法
java·开发语言
Amumu1213828 分钟前
Vue脚手架(二)
前端·javascript·vue.js
花间相见34 分钟前
【LangChain】—— Prompt、Model、Chain与多模型执行链
前端·langchain·prompt
Thomas_YXQ39 分钟前
Unity3D在ios平台下内存的优化详解
开发语言·macos·ios·性能优化·cocoa
咸甜适中1 小时前
rust的docx-rs库,自定义docx模版批量生成docx文档(逐行注释)
开发语言·rust·docx·docx-rs
浒畔居1 小时前
泛型编程与STL设计思想
开发语言·c++·算法
Fcy6481 小时前
C++ 异常详解
开发语言·c++·异常