当前位置: 首页 > article >正文

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

本质利用的是JS闭包
原始es6代码:

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

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

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


http://www.kler.cn/a/284467.html

相关文章:

  • python魔术方法的学习
  • ubuntu中apt-get的默认安装路径。安装、卸载以及查看的方法总结
  • Node.js笔记
  • Rust 整数
  • Qt 获取当前系统中连接的所有USB设备的信息 libudev版
  • fastapi 查询参数支持 Pydantic Model:参数校验与配置技巧
  • 曾黎登八月《费加罗Figaro》封面:湿发造型魅力大开
  • 风控建模流程一张图
  • 关于武汉芯景科技有限公司的实时时钟芯片XJ8337开发指南(兼容DS1337)
  • 二叉树的相关oj题目 — java实现
  • vben:对话框组件
  • 2024年8月30日(docker部署project-exam-system系统 并用Dockerfile构建java镜像)
  • 西安电子科技大学研究生新生大数据
  • 深入解析Nginx负载均衡中的`down`指令及其应用
  • SPR系列单点激光雷达测距传感器|模组之CAN-OPEN软件调试说明
  • 全网首发Windows 系统中常用的巡检命令和 CMD 命令
  • linux访问github网速太慢 the remote end hung up unexpectedly问题
  • Docker Compose 部署 Kafka的KRaft模式 不用依赖 Zookeeper
  • 跟《经济学人》学英文:2024年08月31日这期 How Abercrombie Fitch got hot again
  • 72 华为资源库
  • 第十六章 rust命令行工具开发实践
  • Django orm 中设置读写分离
  • Clickhouse集群化(二)单节点部署
  • 深度学习基础--梯度下降与初始化
  • 分享8个Python自动化实战脚本!
  • Sora 代码规范之Refactor this method to not always return the same value.(目的性问题)