• ----关于JS中迭代的三个“FOR”----


    for each...in

      使用一个变量迭代一个对象的所有属性值,对于每一个属性值,有一个指定的语句块被执行。

      一些对象的内置属性是无法被遍历到的,包括所有的内置方法,例如String对象的indexOf方法。不过大部分的用户自定义属性都是可遍历的。

      【警告:永远不要使用  for each...in语句遍历数组,仅用来遍历常规对象。(有可能会对数组顺序发生改变)】

      语法:

        for each (variable in object) {
          statement
        }

      参数:

        variable

          用来遍历属性值的变量,前面的var关键字是可选的。该变量是函数的局部变量而不是语句块的局部变量。

        object

          该对象的属性值会被遍历。

        statement

          遍历属性值时执行的语句。 如果想要执行多条语句, 请用({ ... }) 将多条语句括住。

      eg:

        var sum = 0;
        var obj = {prop1: 5, prop2: 13, prop3: 8};

        for each (var item in obj) {
        sum += item;
        }

        console.log(sum);

        // output:logs "26", which is 5+13+8

    for...in

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

      for...in 循环只遍历可枚举属性。

      像 Array和 Object使用内置构造函数所创建的对象都会继承自Object.prototype和String.prototype的不可枚举属性。

      语法:

        for (variable in object) {...}

      参数:

        variable

          在每次迭代时,将不同的属性名分配给变量。

        object

          被迭代枚举其属性的对象。


      eg:

        var obj = {a: 1, b: 2, c: 3};

        for (const prop in obj) {
        console.log(`obj.${prop} = ${obj[prop]}`);
        }

        // Output:
        // "obj.a = 1"
        // "obj.b = 2"
        // "obj.c = 3"

    for...of

      在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代例子,并为每个不同属性的值执行语句。

      对于for...of的循环,可以由break, throw 或return终止。

      语法:

         for (variable of iterable) {
          //statements
          }

      参数:

        variable

          在每次迭代中,将不同属性的值分配给变量。

        iterable

          被迭代枚举其属性的对象。

      eg:

        let iterable = [10, 20, 30];

        for (let value of iterable) {
          value += 1;
          console.log(value);
        }


        // 11
        // 21
        // 31

    -------------------------------------------------------------------------------------------------------------------------------
    关于  for...in  和  for...of 之间的区别:

      无论是for...in还是for...of语句都是迭代一些东西。它们之间的主要区别在于它们的迭代方式。

      for...in 语句以原始插入顺序迭代对象的可枚举属性。

      for...of 语句遍历可迭代对象定义要迭代的数据。

  • 相关阅读:
    mysql5.7一颗B+树可以存放多少行数据?为什么使用B+树而不是B树?
    mysql5.7的锁:乐观锁/共享锁、互斥/排他锁、意向锁、记录锁、行锁/表锁、间隙锁、临界锁、插入意向锁、自增锁、空间索引预测锁、隐式锁
    mysql5.7事务的原理和MVCC,redo log与bin log的区别
    mysql5.7 Buffer Pool特性介绍。innodb三大特性:双写缓冲区、Buffer Pool、AHI(自适应HASH索引)
    mysql5.7 innodb数据字典
    mysql5.7系统表空间和独立表空间,断,组,区,页的概念,innodb双写缓冲区
    mysql5.7行数据存储格式
    mysql5.7全局考虑性能化,SQL优化的最后一步:profile性能分析
    mysql5.7innodb引擎底层分析:子查询种类回顾
    mysql5.7强制指定驱动表与被驱动表straight_join
  • 原文地址:https://www.cnblogs.com/player-yenney/p/9915395.html
Copyright © 2020-2023  润新知