你是真的懂for循环的 i++ 与 ++i 吗?

前记:昨天晚上,当台风伴随暴雨,雨滴拍打窗台,滴答滴答。惊动了,我小手一抖,撸码撸错了位置,把 i++,撸出了 ++i
可能小手反射弧过长,大脑反应迟钝,小手就顺带点了Run。。。
结果。。。。竟然程序正常运行了?
在这里插入图片描述
我滴个乖乖。这个是什么gui ?
吓得我赶紧连忙一口气连撸出10行代码。

let i = 0 ;
console.log(i); 	//0
console.log(i++); 	//0
console.log(i++);	//1
console.log(i);		//2
console.log( '\n' );
let j = 0 ;
console.log(j);		//0
console.log(++j);	//1
console.log(++j);	//1
console.log(j);		//2

输出结果的确如我所料,经查阅资料,得到一个官方解析。

i++ 返回原来的值,++i 返回加1后的值

不错不错,看来大学【程序设计】还是没白学的。
在这里插入图片描述
那么,问题就来了,既然i++与++i结果不一样,为什么刚才的for循环,竟然??
这不解之谜,我马上拿起电脑再撸10行代码。
这次我除了 i++ 与 ++i 外,再增加了一个最常见的一个i+=1进行试验。

for(let i = 0 ; i < 5 ; i++){
    console.log('i++,',i);
}
console.log( '\n' );	//这个是分割符号
for(let i = 0 ; i < 5 ; ++i){
    console.log('++i,',i);
}
console.log( '\n' );	//这个是分割符号
for(let i = 0 ; i < 5 ; i+=1){
    console.log('i+=1,',i);
}

一顿猛虎操作后,结果如下:

i++, 0
i++, 1
i++, 2
i++, 3
i++, 4

++i, 0
++i, 1
++i, 2
++i, 3
++i, 4

i+=1, 0
i+=1, 1
i+=1, 2
i+=1, 3
i+=1, 4

惊喜吧?竟然 在for 循环中 i++,++i,i+=1结果一致

经查阅:

for (语句 1; 语句 2; 语句 3) { 被执行的代码块 }
语句 1 (代码块)开始前执行

语句 2 定义运行循环(代码块)的条件

语句 3 在循环(代码块)已被执行之后执行

其实从这上面资料可以看出, i++、++i、i+=1的意义是等价的,执行完该行代码后,才进入下一轮循环体。
就好像说你要走100米,先出哪只脚没什么分别。
在这里插入图片描述
解决完这个疑问,再也不怕写手撕算法时,傻傻分不清楚了。
但是,值得注意的一点是, i++、++i、i+=1,执行的顺序不同,执行性能也是有所区别。
至于快多少呢?下面亲测十轮。

console.time('foreach1');
for(let i = 0 ; i < 5 ; i++){
}
console.timeEnd('foreach1');

console.time('foreach2');
for(let i = 0 ; i < 5 ; i+=1){
}
console.timeEnd('foreach2');

console.time('foreach3');
for(let i = 0 ; i < 5 ; ++i){
}
console.timeEnd('foreach3');

经多次测量,结果如下:
在这里插入图片描述
实验结论,++i的消耗最小,其次是i+=1,性能消耗最大是i++
通过此轮实验,追求性能极致的小哥哥姐姐们,懂得以后for循环用哪个递增了啵?

觉得有帮到你的,点个赞再走!
你的点赞,是我坚持的动力!
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Draven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值