【高性能JavaScript】读书笔记 - 算法和流程控制(一) - 08

本文介绍了JavaScript中的四种循环类型:for、while、do-while和for-in循环,并详细解释了它们的特点和适用场景。for-in循环虽然可以用于枚举对象属性,但因其性能较低,通常不建议用于数组遍历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


【简介】JavaScript 定义了四种基本循环类型,for、for-in、while、do-while。这四种之中,for-in 性能比较弱,但它能获取未知对象的属性。

代码的整体结构是影响运行速度的主要因素之一。代码数量少并不意味着运行速度就快,代码数量多也不意味着运行速度一定慢。代码的组织结构和解决具体问题的思路是影响代码性能的主要因素。

1. 循环(Loops)

1-1. 循环类型(Types of Loops)

JavaScript 定义了四种循环类型。
第一种 —— 标准 for 循环:

for (var i = 0; i < 10; i++) {
    // 循环主体
}

第二种 —— while 循环:

var i = 0;
while(i < 10) {
    // 循环主体
    i++;
}

第三种 —— do-while 循环:

var i = 0;
do {
    // 循环主体
} while (i++ < 10);

第四种 —— for-in 循环:

for( var prop in object) {
    // 循环主体
}

有以下几点说明一下:

  1. for 初始化中的 var 语句会创建一个函数级的变量,即在 for 循环中定义一个新变量相当于在循环体外定义一个新变量。

所以上面的 for 实际上是这样一个过程:

var j = 0;
for ( ; j<10; j++){
    // 循环主体
}

对于多个变量的初始化,我们也可以这样写:

for (var i = 0,len = arr.length; i < len; i++) {
    // 循环主体
}
  1. for 循环是前测条件循环,即先判断条件是否满足,满足的情况下,执行循环体,后面的 while 循环也是。而 do-while 循环则是后测条件循环,即先执行一次循环体,然后再判断条件是否满足。

  2. for-in 循环有一个非常特别的用途:枚举任何对象的属性名。

var obj = {
    name:"jack",
    age : 23
}
for(var prop in obj){
    console.log(prop);
}

输出:
name              demo.html:57 
age               demo.html:57 
1-2. 循环性能(Loop Performance)

不断引发循环性能争论的源头是循环类型的选择。在 JavaScript 提供的四种循环类型中,只有 for-in 循环比其他几种明显要慢。除了 for-in 循环外,其他循环类型的性能都差不多。

由于每次迭代操作都会同时搜索实例或原型属性,for-in 循环的每次迭代都会产生更多的开销,所以比其他循环类型要慢。对比相同迭代次数的循环,for-in 循环最终只有其他类型速度的1/7.因此,除非明确需要迭代一个属性数量未知的对象,否则应避免使用 for-in 循环,更不要用 for-in 来遍历数组。

附: 欢迎大家关注我的新浪微博 - 一点编程,了解最新动态 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值