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

es6

只总结一些特例

let const var

1 let + for
唯一的例外是我对let声明阻塞的显式形式的偏好是一个出现在for循环的标题中的let。原因可能看起来细微,但我相信它是更重要的ES6功能之一。

试想一下:

var funcs = [];

for (let i = 0; i < 5; i++) {
    funcs.push( function(){
        console.log( i );
    } );
}

funcs[3]();  //3

funcs[3](); // 3
在for头部中的let i声明了一个i不只是for循环本身,但它为循环的每次迭代重新声明一个新的i。 这意味着在循环迭代中创建的闭包会以你期望的方式接近这些迭代变量。

如果你尝试了同样的代码段,但是在for循环头中使用var i,你将获得5而不是3,因为在外部范围中只有一个i被关闭,而不是每个迭代的新i功能关闭。

你也可以略微更冗长地完成同样的事情:

for (var i = 0; i < 5; i++) {
    let j = i;
    funcs.push( function(){
        console.log( j );
    } );
}

funcs[3]();        // 3

在这里,我们为每次迭代强制创建一个新的j,然后闭包的工作方式相同。 我喜欢前一种方法; 这额外的特殊能力是我为什么赞同for(let ..)..形式。 它可以被认为它有点更隐式,但它是足够明确,有用的,符合我的口味。

let也可以使用for..in和for..of循环(参见“for..of循环”)。

相关文章:

  • win32之全屏窗口
  • 【ocp新题库】052最新考题收集整理-第7题
  • 蓝桥杯-基础练习12 十六进制转八进制
  • 8 quick ways to clear up drive space in Windows 10
  • 【原创】Hacker学习发展流程图 V1.0
  • 设计模式(八)_门面模式
  • centos 中文乱码解决办法
  • Confluence 6 WebDAV 禁用严格路径检查
  • 并查集——向量偏移
  • 洛谷P3952 时间复杂度
  • XSS Filter Evasion Cheat Sheet 中文版
  • 【Android Studio安装部署系列】二十七、Android studio修改项目名称和包名
  • awk编程
  • 24. 两两交换链表中的节点
  • 如何使Python完美升级到新版本
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 2019.2.20 c++ 知识梳理
  • docker容器内的网络抓包
  • eclipse的离线汉化
  • Java|序列化异常StreamCorruptedException的解决方法
  • Node + FFmpeg 实现Canvas动画导出视频
  • Spring核心 Bean的高级装配
  • ViewService——一种保证客户端与服务端同步的方法
  • Vue官网教程学习过程中值得记录的一些事情
  • windows下使用nginx调试简介
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 检测对象或数组
  • 区块链技术特点之去中心化特性
  • 微服务核心架构梳理
  • 译自由幺半群
  • 仓管云——企业云erp功能有哪些?
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • # 达梦数据库知识点
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #HarmonyOS:基础语法
  • #前后端分离# 头条发布系统
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (ZT)一个美国文科博士的YardLife
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (第二周)效能测试
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (离散数学)逻辑连接词
  • (理论篇)httpmoudle和httphandler一览
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)mysql使用Navicat 导出和导入数据库
  • (转载)OpenStack Hacker养成指南
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .NET MVC第三章、三种传值方式
  • .NET 使用 XPath 来读写 XML 文件
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NetCore项目nginx发布