zoukankan      html  css  js  c++  java
  • JS----(in /for in/forEach /for of)

    for in/ for of

    for…in循环会遍历一个object所有的可枚举属性。
    for…of会遍历具有iterator接口的数据结构。

    for…in 遍历(当前对象及其原型上的)每一个属性名称,到对像的key或数组,字符串的下标
    for…of遍历(当前对象上的)每一个属性值。

    原生具备 Iterator 接口的数据结构如下:

     Array   
     Map 
     Set 
     String
     TypedArray
     函数的arguments对象 
     NodeList对象
    

    in
    参考学习:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/in
    指定的属性在指定的对象或其原型链中,则in 运算符返回true。
    (prop in object)
    prop:一个字符串类型或者 symbol 类型的属性名或者数组索引(非symbol类型将会强制转为字符串)。

    如果你使用 delete 运算符删除了一个属性,则 in 运算符对所删除属性返回 false。
    如果你只是将一个属性的值赋值为undefined,而没有删除它,则 in 运算仍然会返回true。

    继承属性:
    如果一个属性是从原型链上继承来的,in 运算符也会返回 true。
    “toString” in {}; // 返回true
    for in
    for in的写法:

    var wq = {
      age:20,
      name:"咸鱼",
      sex:"男"
    }
     
    for(var attr in wq){//attr是属性,attr可以换成任意变量名
      console.log(attr);//  输出的是 属性名:age  name  sex
      console.log(wq[attr]);//属性相对应的值  20  咸鱼  男
    }
    

    forEach
    forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
    array.forEach(function(currentValue, index, arr), thisValue)

    currentValue 必需。
    当前元素 index 可选。当前元素的索引值。
    arr 可选。当前元素所属的数组对象。

    for in也可以遍历数组,但是会存在以下几个问题。

    1、index索引为字符串型数字,不能直接进行几何运算

    2、遍历顺序有可能不是按照实际数组的内部顺序

    3、使用for in会遍历数组所有的可枚举属性,包括原型。例如上栗的原型方法method和name属性

    遍历普通数组的话,用for是最好的选择,但是如果是对象,就for in就好了。

  • 相关阅读:
    Android软件常用下载
    布同:如何解决Python中文问题(总结了多位前人经验,初学者必看)
    布同:统计英文单词的个数
    布同:网络服务器的结构设计
    新浪微博快速发布器【正在制作中】
    布同:Python函数帮助查询小工具[v1和v2]
    写概要设计的简单心得
    手写分页 个人感觉还能优化,甚至抽象出来,需要高手讲解
    让我纠结的IIS和他的回收
    今天学了WCF记录一下
  • 原文地址:https://www.cnblogs.com/princeness/p/11664941.html
Copyright © 2011-2022 走看看