美文网首页
JavaScript易混点

JavaScript易混点

作者: 晴窗细语 | 来源:发表于2018-12-18 15:14 被阅读0次

    数组与对象

    数组

    JavaScript数组就是对象,每个数组都有一个length属性。

    区别与使用
    1. 数组使用整数作为属性名,对象随意。
    2. 当属性名是小而连续的整数时,应该使用数组,否则使用对象。
    区分数组和对象
    /*
     * 《JavaScript语言精粹》 P60例子
     */
    
    var is_array = function(value) {
        return value && typeof value ==='object' && value.constructor === Array;
    }
    
    var is_array = function(value) {
        return Object.prototype.toString.apply(value) === '[Object Array]';
    }
    

    for ... in与 for ... of遍历

    for ... in

    枚举一个对象的所有属性名(或键名),在每次循环中,object的下一个属性名字符串被赋值给variable。

    1. 可用来遍历数组,遍历时无法保证属性的顺序。
    2. 可用来遍历对象的所有属性的名字,也会遍历出所有从原型链中继承而来的成员属性。
    for ... of

    ES6规范,可遍历所有部署了Symbol.iterator属性的所有数据结构。用法与for ... in类似

    区别
    1. for ... in 循环对象读取键名,for ... of 读取键值。
    2. 遍历数组时,for ... of 值返回具有数字索引的属性,for ... in返回全部属性。
    /*
     * 《ES6标准入门》 P176例子
     */
    let arr = [3, 5, 7];
    arr.foo = 'hello';
    
    for (let i in arr) {
        console.log(i);        //"0", "1", "2", "foo"
    }
    
    for (let in in arr) {
        console.log(i);        //"3", "5", "7"
    }
    

    相关文章

      网友评论

          本文标题:JavaScript易混点

          本文链接:https://www.haomeiwen.com/subject/tetckqtx.html