• 数组中使用for in循环的问题


    js是一门动态语言,而且是弱类型的,这也引来了一些不必要的麻烦,比如说数组的长度不固定,数组也可以像其他语言里的对象一样给它添加属性看下面的例子

    var arr = [1,2,3]
    arr.name = '李世明'
    for(var i = 0 , len = arr.length ; i<len ; i++){
        console.log(arr[i])
    }
    console.log('数组长度:'len)

    上面是正常的使用常规的for循环语句,还有一个用来循环对象的for(var key in obj),假如使用for in以上的arr会出现什么样的结果呢?它会循环4次,没错就是这么怪异,下面来解析一下为什么会这样,解释的不对的话小伙伴们多多指教,下面只是我个人的理解,或许不对

    数组本身也是个由键值对组成的,在普通的数组中(没有给数组追加任何属性的情况下比如上面的name属性),验证这点可以使用console.log(arr)和console.dir(arr)验证查看

    所以name作为arr的一个用for in显然就会被迭代到,因为他枚举的是键值对,在这个arr的数组中可枚举的属性就4个,看代码

    所以在循环数组时应该尽量避开for in 以免发生不必要的麻烦

    当然了在ES 2015中可以用for of来替代for in,for of修复了这个bug

  • 相关阅读:
    vue2查看大图vue-preview使用笔记
    promise使用场景
    vue2移动端使用vee-validate进行表单验证
    移动端单位换算理解
    ...
    我的promise学习笔记
    前端本地调试解决跨域的两种方法
    vue2 零星笔记
    vue2.x使用百度地图
    BZOJ 3368 约翰看山(扫描)O(N)
  • 原文地址:https://www.cnblogs.com/chuangyidai/p/6089147.html
Copyright © 2020-2023  润新知