总结一下JavaScript 中的 for 循环

总结一下JavaScript 中的 for 循环

魅影
2022-01-18 / 0 评论 / 141 阅读 / 正在检测是否收录...

简单for 循环---循环代码块一定的次数
先来看一下常见写法:

const arr = [1, 2, 3];
for(let i = 0; i < arr.length; i++) {
    console.log(arr[i]);
}

如果数组长度在循环过程中不会改变,将数组长度用变量存储起来会获得更好的效率,改进后的写法:

const arr = [1, 2, 3];
for(let i = 0, len = arr.length; i < len; i++) {
    console.log(arr[i]);
}

for-in---循环遍历对象的属性

用 for-in 来遍历一遍数组的内容,代码如下:

const arr = [1, 2, 3];
let index;
for(index in arr) {
    console.log("arr[" + index + "] = " + arr[index]);
}
// 输出结果如下
// arr[0] = 1 
// arr[1] = 2 
// arr[2] = 3

for-in 循环遍历的是对象的属性,而不是数组的索引。因此, for-in 遍历的对象不局限于数组,还可以遍历对象。

const person = {
    fname: "san",
    lname: "zhang",
    age: 29
};
let info;
for(info in person) {
    console.log("person[" + info + "] = " + person[info]);
}
// 输出结果如下
// person[fname] = san 
// person[lname] = zhang 
// person[age] = 29

要注意的是,for-in 遍历属性的顺序并不确定,即输出的结果顺序与属性在对象中的顺序无关,也与属性的字母顺序无关,与其他任何顺序都无关。

前面已经强调过,Array 在 Javascript 中是一个对象, Array 的索引是属性名。此处输出的索引值,即 “0″、 “1″、 “2″不是 Number 类型的,而是 String 类型的,因为其就是作为属性输出,而不是索引。

for-in 只能遍历“可枚举的属性”, length 属于不可枚举属性,实际上, Array 对象还有许多其他不可枚举的属性。

修改一下前面遍历数组的例子:

const arr = [1, 2, 3];
arr.name = "Hello world";
let index;
for(index in arr) {
    console.log("arr[" + index + "] = " + arr[index]);
}
// 输出结果如下:
// arr[0] = 1 
// arr[1] = 2 
// arr[2] = 3 
// arr[name] = Hello world
1

评论 (0)

取消