• js 笔记整理


    Js中for、for-in、forEach以及for-of的用法及特性对比

    for-in

    for...in以任意顺序遍历一个对象的可枚举属性。所以for-in不适合用来迭代一个Array。同时,for-in是可以遍历对象中所有可枚举属性的,包括原型链上的可枚举属性。

    let ret = [];
    array.num = 6;  //  对象上直接添加属性
    Array.prototype.num = 6;  // 原型链中添加属性
    for(let i in array){
      ret.push(array[i])
    }
    console.log(ret)   //  [ 1, 2, 3, 4, 5, 6, 7 ]
    

      

    如果可以地设置属性为不可枚举,那么for-in循环将不会遍历到这个属性

    let ret = [];
    Object.defineProperty(array,"num",{
      enumerable: false,  // 设置属性不可遍历
      value: 8
    })
    for(let i in array){
      ret.push(array[i])
    }
    console.log(ret)  //  [ 1, 2, 3, 4, 5 ]
    

    解决方法:使用hasOwnProperty()
    hasOwnProperty()方法可以检测一个属性是存在于实例中,还是存在于原型中。这个方法只在给定属性存在于对象实例中时,才会返回true。 

    /数组
    var arr = ["星期一","星期二","星期三"];
    Array.prototype.something = ["放假","休息咯"];
    for (var i in arr){
    	if(arr.hasOwnProperty(i)){ 
    		console.log(arr[i])
    	}
    }
    

      

    for(最原始的写法)、 支持 break、continue和return语句)、

    forEach 数组的方法,arr.forEach;  forEach(ES5,但是它不支持使用break、continue和return语句)、

    for…in循环数组索引、对象的属性,但使用 for…in 原型链上的所有属性都将被访问,用 hasOwnProperty() 方法解决。

    for…of(ES6,循环数组的元素值)这三个是循环数组(对象数组)的;

    定义变量的6种方式

    ES5 只有两种声明变量的方法:

    var命令和function命令。

    ES6 除了添加letconst命令,

    还有 import命令和class命令。

  • 相关阅读:
    【题解】Luogu P2081 [NOI2012]迷失游乐园
    【题解】Luogu P4436 [HNOI/AHOI2018]游戏
    【题解】Luogu P4438 [HNOI/AHOI2018]道路
    【题解】Luogu P1344 [USACO4.4]追查坏牛奶Pollutant Control
    【题解】Luogu P3674 小清新人渣的本愿
    Mysql之数据库存储引擎
    Linux之取消别名设置
    Linux之别名设置
    Mysql之设置用户指定ip地址操作数据库
    Linux之php编译安装5.6
  • 原文地址:https://www.cnblogs.com/surfaces/p/10814761.html
Copyright © 2020-2023  润新知