download:轻松实现Rust系统入门,实战编译器开发 在对数组或对象停止遍历时,我们经常会运用到两种办法: for in和for of,那么这两种办法之间的区别是什么呢?让我们来研讨研讨 简单来说就是它们两者都能够用于遍历,不过for in遍历的是数组的索引(index),而for of遍历的是数组元素值(value) // for in var obj = {a:1, b:2, c:3} for (let key in obj) { console.log(key) } // a b c //for of const array1 = ['a', 'b', 'c'] for (const val of array1) { console.log(val) } // a b c 复制代码 先说说 for in for in更合适遍历对象,当然也能够遍历数组,但是会存在一些问题, 比方: index索引为字符串型数字,不能直接停止几何运算 var arr = [1,2,3] for (let index in arr) { let res = index + 1 console.log(res) } //01 11 21 复制代码 遍历次第有可能不是依照实践数组的内部次第 运用for in会遍历数组一切的可枚举属性,包括原型,假如不想遍历原型办法和属性的话,能够在循环内部判别一下,运用hasOwnProperty()办法能够判别某属性是不是该对象的实例属性 var arr = [1,2,3] Array.prototype.a = 123 for (let index in arr) { let res = arr[index] console.log(res) } //1 2 3 123 for(let index in arr) { if(arr.hasOwnProperty(index)){ let res = arr[index] console.log(res) } } // 1 2 3 复制代码 再来说说ES6 中的 for of for of遍历的是数组元素值,而且for of遍历的只是数组内的元素,不包括原型属性和索引 var arr = [1,2,3] arr.a = 123 Array.prototype.a = 123 for (let value of arr) { console.log(value) } //1 2 3 复制代码 for of适用遍历数/数组对象/字符串/map/set等具有迭代器对象(iterator)的汇合,但是不能遍历对象,由于没有迭代器对象,但假如想遍历对象的属性,你能够用for in循环(这也是它的本职工作)或用内建的Object.keys()办法 var myObject={ a:1, b:2, c:3 } for (var key of Object.keys(myObject)) { console.log(key + ": " + myObject[key]); } //a:1 b:2 c:3 复制代码 小结 for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值 for in总是得到对象的key或数组、字符串的下标 for of总是得到对象的value或数组、字符串的值
用户必须遵守《计算机软件保护条例(2013修订)》第十七条:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。鉴于此条例,用户从本平台下载的全部源码(软件)教程仅限学习研究,未经版权归属者授权不得商用,若因商用引起的版权纠纷,一切责任均由使用者自行承担,本平台所属公司及其雇员不承担任何法律责任。
锦绣源码库 » 轻松实现Rust系统入门,实战编译器开发sffsa