美文网首页
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