for循环两个略骚的写法

骚写法
或许你知道,总之我觉得很酷,希望你也这么认为。
递增遍历
最常见场景,从 0 到 10 的遍历,不输出 10:
for(let i = -1; ++i < 10;) {
console.log(i)
}
// 0,1,2,3,4,5,6,7,8,9
对比下常规写法:
for(let i = 0; i < 10; i++) {
console.log(i)
}
// 0,1,2,3,4,5,6,7,8,9
递减遍历
倒序遍历,不遍历第一个,常见用来删除元素等:
for(let i = 10; i--;) {
console.log(i)
}
// 9,8,7,6,5,4,3,2,1,0
对比下常规写法:
for(let i = 10 - 1; i > -1; i--) {
console.log(i)
}
// 9,8,7,6,5,4,3,2,1,0
原理解析:
for(l1; l2; l3) {} 执行顺序:
- l1 整个循环开始前执行一次
- l2 当次循环执行前执行一次,判断是否需要执行
- l3 每次循环结束执行一次
留个小问题,尝试把两个简写的 ++ 与 -- 关于 i 的前后位置换换会有什么效果,为什么?
for循环两个略骚的写法的更多相关文章
- Bash实用技巧:同时循环两个列表
摘要: 你会学到一种原创的同时循环两个列表的方法.类似于Python或者Haskell的zip函数,非常简洁直观,效果如下: $ paste <( ) <( ) | while read ...
- python 学习笔记(循环,print的几种写法,操作符)
一.循环( for, while) while循环是指在给定的条件成立时(true),执行循环体,否则退出循环.for循环是指重复执行语句. break 在需要时终止for /while循环 cont ...
- java实现八皇后问题(递归和循环两种方式)
循环方式: package EightQueens; public class EightQueensNotRecursive { private static final boolean AVA ...
- 【剑指offer】递归循环两种方式反转链表
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25737023 本文分别用非递归和递归两种方式实现了链表的反转,在九度OJ上AC. 题目描写 ...
- java保留小数后两位的四种写法
package com.btzh.mis.house.utils; import java.math.BigDecimal;import java.math.RoundingMode;import j ...
- shell循环(两个日期比较,改变某个特定日期来改变当前比较值)
需求:从当前时间前6个月开始执行某个语句,直到执行到当前日期的前一天. shell脚本如下: #!/bin/bash yesterday=`date -d -1day +%Y%m%d` sixmon ...
- 【JavaScript】两种常见JS面向对象写法
基于构造函数 function Circle(r) { this.r = r; } Circle.PI = 3.14159; Circle.prototype.area = function() { ...
- php同时循环两个数组
<? $yurl=$row[yurl]; $yurl_name=$row[yurl_name]; $var=explode("|",$yurl); $var2=explode ...
- 文本输入框的两种div+css的写法
1.扁平化的设计风格.--淘宝 直接使用input.对其设置height.padding.使鼠标居中又不会占满输入框. 2.背景是图片的设计.--百度 试用span将input包裹 ...
随机推荐
- springcloud 入门 11 (Hystrix Dashboard)
hystrix: 断路器我在前面已经介绍,不了解的可以参考 :springcloud 入门 6 (断路器hystrix) 关于搭建,测试我都在这里面进行说明了,这章介绍的是 Hystrix Das ...
- java -jar 命令
java -jar spring.jar 这个命令当你 controller c 之后,程序就自动结束了 java jar spring.jar & &是指在后台运行,但当用户推出(挂 ...
- https://www.testingcircus.com/tell-me-about-yourself-6-sample-answers-software-testers/
https://www.testingcircus.com/tell-me-about-yourself-6-sample-answers-software-testers/ Tell Me Abou ...
- Fragment分解使用
Fragment碎片:作为Activity的一部分,不能单独使用: 1. Fragment特点: (1)一个Fragment可以在多个Activity中重用: (2)一个Activity内部可以嵌入多 ...
- Python之对象的永久保存模块---pickle
经常遇到在Python程序运行中得到了一些字符串.列表.字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据. 这个时候Pickle模块就派上用场了,它可以将对象转换 ...
- EJB3.0中的session bean以及MDB解析
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/aboy123/article/details/24587133 大型业务系统面临的主要问题就是高并发 ...
- Excel中row函数的使用方法
1.row函数的含义 1 row函数的含义 返回所选择的某一个单元格的行数. END 2.row函数的语法格式 1 row函数的语法格式 =row(reference) 如果省略reference,则 ...
- oracle 查询 归档日志最大值和平均值
select max(ss.size_GB), avg(ss.size_GB) from (select s.*, rownum rn2 from (select a.* ...
- socket实现聊天功能(二)
socket实现聊天功能(二) WebSocket协议是建立在HTTP协议之上,因此创建websocket服务时需要调用http模块的createServer方法.将生成的server作为参数传入so ...
- Vue2 第四天学习(Vue的生命周期)
阅读目录 1.理解VUE---混合 2.Vue实例化选项 3.Vue实例化的生命周期 回到顶部 1.理解VUE---混合 在了解Vue生命周期之前,我们先来学习Vue中的混合吧: 为什么需要使用混合? ...