zoukankan      html  css  js  c++  java
  • 五分钟掌握 for...in 和 for...of 区别

    GitHub 地址,欢迎star,查看更多整理的前端知识

    for...in

    for...in 语句以任意顺序遍历一个对象的可枚举属性。
    for...in 遍历对象本身的所有可枚举属性,以及对象从其构造函数原型中继承的属性。

    
    for (variable in object) {...}
    
    • variable 在每次迭代时,将不同的属性名分配给变量。
    • object 被迭代枚举其属性的对象。

    只遍历自身的可枚举属性,可以使用 hasOwnProperty

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

    for...of

    for...of 语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。
    对于for...of的循环,可以由break, throw 或return终止(使用return报错?)。

    
    for (variable of iterable) {
        //statements
    }
    
    • variable 在每次迭代中,将不同属性的值分配给变量。
    • iterable 被迭代枚举其属性的对象。
    
    let iterable = [10, 20, 30];
    
    for (const value of iterable) {
      console.log(value);
    }
    // 10
    // 20
    // 30
    

    for...of 与 for...in 区别

    • for...in 语句以原始插入顺序迭代对象的可枚举属性。
    • for...of 语句遍历可迭代对象定义要迭代的数据。

    区别示例:

    
    Object.prototype.objCustom = function() {}; 
    Array.prototype.arrCustom = function() {};
    
    let iterable = [3, 5, 7];
    iterable.foo = 'hello';
    
    for (let i in iterable) {
      console.log(i); // 0, 1, 2, "foo", "arrCustom", "objCustom"
    }
    
    for (let i in iterable) {
      if (iterable.hasOwnProperty(i)) {
        console.log(i); // 0, 1, 2, "foo"
      }
    }
    
    for (let i of iterable) {
      console.log(i); // 3, 5, 7
    }
    

    原文地址:https://segmentfault.com/a/1190000016755195

  • 相关阅读:
    vue-自定义指令
    vue-自定义过滤器--时间
    vue-jsonp
    vue-post
    vue-get-参数
    vue-get
    vue-百度下拉列表
    C#网页授权获取微信Openid
    C#微信环境分享页面给微信好友、朋友圈
    IIS服务器同时使用多个https证书如何操作443端口
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9903728.html
Copyright © 2011-2022 走看看