美文网首页JS,JQ
for of和for in区别

for of和for in区别

作者: Artifacts | 来源:发表于2019-08-18 14:24 被阅读0次

for...in

以任意顺序遍历一个对象自有的、继承的、可枚举的、非Symbol的属性。对于每个不同的属性,语句都会被执行。

for...of

ES6 引入for...of循环,作为遍历所有数据结构的统一的方法。一个数据结构只要部署了Symbol.iterator属性,就被视为具有 iterator 接口,就可以用for...of循环遍历它的成员。也就是说,for...of循环内部调用的是数据结构的Symbol.iterator方法。for...of循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。


区别

JavaScript 原有的for...in循环,只能获得对象的键名,不能直接获取键值。ES6 提供for...of循环,允许遍历获得键值。

var arr = ['a', 'b', 'c', 'd'];
for (let a in arr) {
     console.log(a); // 0 1 2 3
}
for (let a of arr) {     
     console.log(a); // a b c d
}

for...of循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性。这一点跟for...in循环也不一样。

let arr = [3, 5, 7];
arr.foo = 'hello';
for (let i in arr) {    
      console.log(i); // "0", "1", "2", "foo"
}
for (let i of arr) {    
      console.log(i); //  "3", "5", "7"
}

for...of循环不会返回数组arr的foo属性。 推荐在循环对象属性的时候,使用for...in,在遍历数组的时候的时候使用for...of

相关文章

  • <%= %>和${ }区别

    <%= %>只能得到当前面定义的值,<%=表达式%>是输出表达式的, <% %>表示里面写的是普通的JAVA代码....

  • $* 和$@区别

    1 概述 $* 和$@在有加双引号和没有双引号的情况下有明显的区别,在这边用一个实验进行测试 实验的环境如下 为了...

  • for of和for in区别

    for...in 以任意顺序遍历一个对象自有的、继承的、可枚举的、非Symbol的属性。对于每个不同的属性,语句都...

  • =和:=区别

    go语言中 = 是赋值,而 := 是声明变量并赋值

  • * 和 & 区别

    * 和 & 区别 注意!!! 上述代码中的 a 本身就是个 地址 。 上述代码中的 *a 代表的是存储在内存 地址...

  • &和&&区别

    &和&&都是逻辑“与”运算符。即运算符两边表达式结果都为true,运算结果才成立。只要有有一方为false,则结果...

  • className和classList区别

    className和classList区别 setAttribute和add区别 className和classL...

  • 基础面试题

    1,#import和#include区别 #import和@class的区别 #import<>和#import"...

  • iOS开发基础--strong,weak,retain,assi

    weak和strong的区别: copy与retain的区别: __block和__weak修饰符的区别

  • &和&&,| 和 || 的区别

    &不管前面的条件是否正确,后面都执行 &&前面条件正确时,才执行后面,不正确时,就不执行,就效率而言,这个更好。 ...

网友评论

    本文标题:for of和for in区别

    本文链接:https://www.haomeiwen.com/subject/foprsctx.html