首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

let和const循环遍历集合有什么区别?

let和const是ES6引入的两个新的变量声明方式。

  1. let声明的变量具有块级作用域,只在声明的块内有效。而const声明的变量也具有块级作用域,但其值是常量,一旦声明后就不能再被修改。
  2. 在循环遍历集合时,使用let声明的变量可以在每次迭代中重新赋值,而使用const声明的变量则不能重新赋值。

例如,使用let进行循环遍历集合:

代码语言:txt
复制
let collection = [1, 2, 3, 4, 5];
for (let i = 0; i < collection.length; i++) {
  console.log(collection[i]);
}

使用const进行循环遍历集合:

代码语言:txt
复制
const collection = [1, 2, 3, 4, 5];
for (const item of collection) {
  console.log(item);
}

在上述例子中,使用let声明的变量i可以在每次迭代中重新赋值,而使用const声明的变量item则不能重新赋值。

对于集合的循环遍历,如果需要在循环体内修改迭代变量的值,应该使用let声明;如果迭代变量的值不需要修改,应该使用const声明,以增加代码的可读性和安全性。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数(云原生、服务器运维、存储):https://cloud.tencent.com/product/scf
  • 腾讯云数据库(数据库、存储):https://cloud.tencent.com/product/cdb
  • 腾讯云CDN(网络通信):https://cloud.tencent.com/product/cdn
  • 腾讯云安全产品(网络安全):https://cloud.tencent.com/product/saf
  • 腾讯云音视频处理(音视频、多媒体处理):https://cloud.tencent.com/product/mps
  • 腾讯云人工智能(人工智能):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(物联网):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发(移动开发):https://cloud.tencent.com/product/mobdev
  • 腾讯云对象存储(存储):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(区块链):https://cloud.tencent.com/product/baas
  • 腾讯云虚拟专用网络(网络通信):https://cloud.tencent.com/product/vpc
  • 腾讯云容器服务(云原生):https://cloud.tencent.com/product/ccs
  • 腾讯云弹性容器实例(云原生):https://cloud.tencent.com/product/eci
  • 腾讯云弹性伸缩(云原生):https://cloud.tencent.com/product/as
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JavaScript 中的 Var,Let Const 什么区别

: 变量提升 暂时性死区 块级作用域 重复声明 修改声明的变量 使用 变量提升 var声明的变量存在变量提升,即变量可以在声明之前调用,值为undefined letconst不存在变量提升,即它们所声明的变量一定要在声明后使用...c = 10 暂时性死区 var不存在暂时性死区 letconst存在暂时性死区,只有等到声明变量的那一行代码出现,才可以获取使用该变量 // var console.log(a) // undefined...(c) // Cannot access 'c' before initialization const c = 10 块级作用域 var不存在块级作用域 letconst存在块级作用域 // var...defined 重复声明 var允许重复声明变量 letconst在同一作用域不允许重复声明变量 // var var a = 10 var a = 20 // 20 // let let b...'c' has already been declared 修改声明的变量 varlet可以 const声明一个只读的常量。

1K40
  • C# const readonly 什么区别

    如果一个类静态字段,会如何初始化 可以使用的方法两个,第一个方法就是直接在属性定义时写创建,第二个方法就是在构造创建,请看下面代码 private static Test _test = new...private static Test _test; static Demo() { _test = new Test(); } 再来思考下面的问题 请看下面两个代码什么区别...对于隐式转换,如果是 const 支持隐式转换,如果是static readonly,不支持 (1)const常量在编译时解析;而static readonly常量在运行时解析。...(2)const常量必须在定义时初始化;而static readonly常量可以在定义时初始化,也可以在构造函数中初始化; (3)非常确定不会改变的常量值可以用const,必须写在函数体内的常量需要用const...,需要被attributes用到的常量应该用const

    28620

    C# const readonly 什么区别

    如果一个类静态字段,会如何初始化 可以使用的方法两个,第一个方法就是直接在属性定义时写创建,第二个方法就是在构造创建,请看下面代码 private static Test _test = new...private static Test _test; static Demo() { _test = new Test(); } 再来思考下面的问题 请看下面两个代码什么区别...对于隐式转换,如果是 const 支持隐式转换,如果是static readonly,不支持 ? (1)const常量在编译时解析;而static readonly常量在运行时解析。...(2)const常量必须在定义时初始化;而static readonly常量可以在定义时初始化,也可以在构造函数中初始化; (3)非常确定不会改变的常量值可以用const,必须写在函数体内的常量需要用const...,需要被attributes用到的常量应该用const

    1.1K20

    es6中的LetConst详解(文末教程分享)

    Let:用于声明一个变量 特点: 在块作用域内有效,只在let 所在的代码块有效 不能重复声明(会报错提示已经定义) 不会预处理,不存在变量提升 应用 循环遍历监听 使用let替换var是趋势 主要是解决了块级作用域的需求...j = 0; j < 5; j++) { console.log(j) // 0 1 2 3 4 } // let定义的j变量只在for循环的块级作用域中生效,不存在变量提升 console.log...var zxx4 = 'zxx is 8 years old' } // 不会报错,各个块级作用域之间不互相影响 const:就是声明一个常量,大部分特点let一样 声明的时候一定要赋值,否则会报错...const b; // Uncaught SyntaxError: Missing initializer in const declaration 对于基本的类型而言的话,比如number,string...也就是说const定义的引用类型只要指针不发生改变,其他的不论如何改变都是允许的。

    22920

    详细了解JS Map,它传统对象什么区别

    而Map与常规对象什么区别? 主要有两点不同: 1. key的类型无限制 Object无法使用非字符串值作为键名,但Map的键名可以是任意类型,让我们来看一个例子。...console.log(firstInstance["id"]); console.log(secondInstance ["id"]); 输出结果:1 2 下面我们将通过重新造轮子的形式让你了解Map上述例子什么区别...for ... in,另外for ... in循环还有一些限制:它仅仅遍历可枚举属性、非Symbol属性,并且遍历的顺序是任意的。...但是,在此之前,我们需要了解以下方法:keys、valuesentries,这些方法将在我们开始使用for-of循环遍历map对象时很有帮助。...在文末,展示了遍历Map的另一种形式for-of散布运算符(...)来遍历集合。 如果有什么问题或补充,欢迎通过评论区留言告诉我。

    4.7K20

    ES6常见面试题

    (`)标识,可以当作普通字符串使用,也可以用来定义多行字符串 4)解构赋值ES6 允许按照一定模式,从数组对象中提取值,对变量进行赋值 5)for of循环for…of循环可以遍历数组、SetMap...var可以在声明的上面访问变量,而let暂存死区,在声明的上面访问变量会报错 const声明之后必须赋值,否则会报错 const定义不可变的量,改变了就会报错 constlet一样不会与window...应用场景Set用于数据重组,Map用于数据储存Set:  (1)成员不能重复 (2)只有键值没有键名,类似数组 (3)可以遍历,方法add, delete,has Map: (1)本质上是健值对的集合...,类似集合 (2)可以遍历,可以跟各种数据格式转换 6、ECMAScript 6 怎么写 class ,为何会出现 class?...for in 一般常用来遍历对象或json for of数组对象都可以遍历遍历对象需要通过Object.keys() for in循环出的是key,for of循环出的是value 20

    88540

    【原创】前端面试知识体系(一)

    E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95%E7%9F%A5%E8%AF%86%E4%BD%93%E7%B3%BB%EF%BC%88%E4%B8%80%EF%BC%89/ 防抖节流什么区别...什么区别 for of 去遍历可以generator const arr = [10, 20, 30] for (let val of arr) {  console.log(val); // 值 }... querySelectorAll('p') for (let p of pList) {  console.log(p) } 遍历对象: for ... in 可以,for ... of 不可以 遍历...事件循环(EventLoop)什么 单线程异步 JS是单线程的(无论在浏览器还是nodejs) 浏览器中JS执行DOM渲染共用一个线程 异步 宏任务 微任务 宏任务,如 setTimeout...断开,稳定传输 UDP无连接,无断开,不稳定传输,但效率高 HTTP协议1.01.12.0什么区别 HTTP1.0 弃用 最基础的HTTP协议 支持基本的GET,POST的方法 HTTP1.1

    28211

    用javascript分类刷leetcode23.并查集(图文视频讲解)

    ,深度优先遍历每个坐标的四周,注意坐标不要越界,遇到陆地加1,并沉没四周的陆地,这样就不会重复计算复杂度:时间复杂度O(mn), mn是行数列数。...,广度优先遍历坐标的四周,遇到陆地加1,沉没四周的陆地,不重复计算陆地数复杂度:时间复杂度O(mn),mn是行数列数。...空间复杂度是O(min(m,n)),队列的长度最坏的情况下需要能容得下mn中的较小者js:const numIslands = (grid) => { let count = 0 let...; const visited = new Set();//记录是否访问过 let count = 0; const queue = new Array(); for (let i = 0; i...,遇到相邻的城市就合并,最后返回并查集中集合的数量复杂度:时间复杂度O(n^2),n是城市的数量,需要遍历矩阵,经过路径压缩后的并查集中需找父节点复杂度是常数级。

    68750

    可以迭代大部分数据类型的 for…of 为什么不能遍历普通对象?

    加入我们一起学习,天天进步 for…of 及其使用 我们知道,ES6 中引入 for...of 循环,很多时候用以替代 for...in forEach() ,并支持新的迭代协议。...我们可以简单查看几个可被for of迭代的对象,看看普通对象何不同: ? ? ?...而 iterator 的遍历过程,则是类似 Generator 的方式,迭代时不断调用next方法,返回一个包含value(值)done属性(标识是否遍历结束)的对象。...let aClone = { ...a }; // 等同于 let aClone = Object.assign({}, a); 一种说法是:ES6提供了Map数据结构,实际上原生object对象被解构时...同时,ECMAScript后面又引入了异步迭代器for await...of 语句,该语句创建一个循环,该循环遍历异步可迭代对象以及同步可迭代对象,详情可查看MDN:for-await...of。

    1.1K30

    JS遍历循环方法性能对比:forwhilefor infor ofmapforeachevery

    遍历数组性能分析 对数组的遍历大家最常用的就是for循环,ES5的话也可以使用forEach,ES5具遍历数组功能的还有map、filter、some、every、reduce、reduceRight...数组 Array Map Set String arguments对象 Nodelist对象, 就是获取的dom列表集合 -以上这些都可以直接使用 for of 循环。...for of不可以遍历普通对象,想要遍历对象的属性,可以用for in循环, 或内建的Object.keys()方法。 for循环与ES5新增的foreach/map 等方法何区别?...forEach 不支持在循环中添加删除操作,因为在使用 forEach 循环的时候数组(集合)就已经被锁定不能被修改。...(改了也没用) 在 for 循环中可以使用 continue,break 来控制循环跳出循环,这个是 forEach 所不具备的。

    3.5K20

    用javascript分类刷leetcode并查集(图文视频讲解)

    ,深度优先遍历每个坐标的四周,注意坐标不要越界,遇到陆地加1,并沉没四周的陆地,这样就不会重复计算复杂度:时间复杂度O(mn), mn是行数列数。...,广度优先遍历坐标的四周,遇到陆地加1,沉没四周的陆地,不重复计算陆地数复杂度:时间复杂度O(mn),mn是行数列数。...空间复杂度是O(min(m,n)),队列的长度最坏的情况下需要能容得下mn中的较小者js:const numIslands = (grid) => { let count = 0 let...; const visited = new Set();//记录是否访问过 let count = 0; const queue = new Array(); for (let i = 0; i...,遇到相邻的城市就合并,最后返回并查集中集合的数量复杂度:时间复杂度O(n^2),n是城市的数量,需要遍历矩阵,经过路径压缩后的并查集中需找父节点复杂度是常数级。

    57530

    【JavaScript】JavaScript 几个标准阐述

    例如, ● 字符串模板、集合、箭头函数、Promise、for…of循环等均是借鉴其他语言的优秀特性; ● class类import/export模块规范 是对原有ES标准缺失特性的补充; ●...; 字符串模板 当字符串内容变量混合连接时,可以使用字符串模板进行更高效的代码书写并保持代码的格式整洁性。.../people'; //导入 export default satHi ; //导出 循环与迭代器Iterator 循环 ES6中,除了do…while、for循环,还有for…in遍历对象(不要使用其来遍历数组...但是遍历数组最佳的方式是for…of。另外其也能用来遍历Map 、 Set 集合。 迭代器 Interator迭代器让遍历数组、对象集合的方式更加灵活。...并且,Interator能控制每次单步循环触发的时机,不用一次遍历所有的循环

    23610
    领券