javascript里的循环语句
前序:我一直对于for跟for..in存在一种误解,我觉得for都能把事情都做了,为啥还要for...in...这玩意了,有啥用,所以今天就说说JavaScript里的循环语句。
循环
要计算1+2+3,我们可以直接写表达式:
但是当需要计算1+2+3+4+5......+10000,
如果通过表达式来写,估计我们会奔溃,
所以我们现在就可以使用循环(for)来搞定,
其实也很简单,javaScript的循环有两种,一种是for循环,通过初始条件、结束条件和递增条件来循环执行语句块:
这一种估计大家都很熟悉很熟悉。没啥疑问在工作中也会经常用到。那就简单点,代码如下
var x = 0;
var i;
for (i=1; i<=10000; i++) {
x = x + i;
}
x; //
因为这个大家比较熟悉就不说那么多了
让我们简单的来分析一下for循环的控制条件:
- i=1 这是初始条件,将变量i置为1;
- i<=10000 这是判断条件,满足时就继续循环,不满足就退出循环;
- i++ 这是每次循环后的递增条件,由于每次循环后变量i都会加1,因此它终将在若干次循环后不满足判断条件
i<=10000而退出循环。
那么接下来要好好说下的是for...in...,不知道大家是不是跟我一样,都很容易弄混这个。也许大家会嘲笑说,这么简单谁不懂啊。
for循环的一个变体是for ... in循环,它可以把一个对象的所有属性依次循环出来:
不多说,先看代码
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var k in o) {
console.log(k); // 'name', 'age', 'city'
}
很简单吧,也很容易理解吧,k无非就是o对象里面的属性,那也就是我们刚刚在上面加粗的一个,把对象所有属性遍历出来。然后要对对象进行操作就很简单了。
那可能有人好奇,for...in...用来遍历数组应该也可以吧,
嗯,没错。是的没的问题。废话不多说
var a = ['A', 'B', 'C'];
for (var i in a) {
console.log(i); // '0', '1', '2'
console.log(a[i]); // 'A', 'B', 'C'
}
没错,就是这么简单,有人会说咋不一样了,你刚刚明明说是遍历对象的属性啊,咋现在又不一样了。
一切皆对象,没错,数组也是个对象,由于Array也是对象,它的每个元素的索引被视为对象的属性,因此,for ... in循环可以直接循环出Array的索引:
大家不要误解,不要出去就说,一切皆对象,见到漂亮的女生就说你是我对象,这就尴尬了嘛。
毕竟撸码的都知道此对象非彼对象。
while
for循环在已知循环的初始和结束条件时非常有用。而条件的for循环容易让人看不清循环的逻辑,此时用while循环更佳。
while循环只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现:
var x = 0;
var n = 99;
while (n > 0) {
x = x + n;
n = n - 2;
}
x; //
在循环内部变量n不断自减,直到变为-1时,不再满足while条件,循环退出。
别人会问为啥n=99,这个嘛,看清题,是所有奇数的和,不是偶数哈。
do ... while
大家可能没怎么使用个这个,不过这玩意也是挺有用的
do { ... } while()循环,它和while循环的唯一区别在于,不是在每次循环开始的时候判断条件,而是在每次循环完成的时候判断条件:
var n = 0;
do {
n = n + 1;
} while (n < 100);
n; //
可能大家对es6更感兴趣,反而觉得这循环有啥说的,嗯,怎么说基础都很重要,有些知识点不能忽视。es6大家想了解的话,也可以跟我讨论,或者相了解更多前端知识啊,比如vuejs,nodejs等等,可以一起学习,一起进步,毕竟知识日新月异的,几乎每天都有新知识出来。工作中有啥有趣的都可以跟我分享,可能接下来会弄一个微信公众号。
公司最近可能要弄小程序,大家如果已经做过这方面项目可以指导下,毕竟很久没关注小程序这块了。现在需要重新去看看小程序api。
javascript里的循环语句的更多相关文章
- javascript里for循环的一些事情
今天在给一个学妹调她的代码BUG时,她的问题就是在一个for循环里不清楚流程的具体流向,所以导致了页面怎么调都是有问题,嗯确实你如果不清楚语句流向很轻易就会出问题,所以说for循环不会用或者说用的不恰 ...
- JavaScript里的循环方法总结
JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的: for (var index = 0; index < myArray.length; index++) ...
- JavaScript里的循环方法之forEach,for-in,for-of
JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标 ...
- JavaScript里的循环方法:forEach,for-in,for-of
JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的: for (var index = 0; index < myArray.length; index++) ...
- 你可能不知道的java、python、JavaScript以及jquary循环语句的区别
一.概述 java循环语句分为四种形式,分别是 while, do/while, for, foreach: python中循环语句有两种,while,for: JavaScript中循环语句有四种, ...
- javascript语法之循环语句
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- javascript总结13:循环语句
1 While循环 While(条件表达式){ 只要条件表达式结果为true,循环一直执行,当条件表达式结果为false的时候,循环终止 } While循环语句需现在循环体外定义变量. 2 for循环 ...
- JavaScript、for循环语句知识巩固,while(){}语句以及do{}while()语句以及switch()语句
一.for循环语句练习 关于for循环存在的两个问题类型 穷举:在不知道什么情况下才真的寻要我们的结果,自能让我们一个个走一遍. 迭代:在现有的条件根据规律不断求解,中间情况,最终推测出来的结果 1. ...
- javascript系列-class3.循环语句
欢迎加入前端交流群来py: 转载请标明出处! while循环 while(循环终止条件){ } 案例 输出0~100个数字 1 . 3 . 5 不输出 输出一百数字 ...
随机推荐
- Android安全开发之WebView中的大坑
0X01 About WebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者简单的展示一些在线内容等.WebView功能强大 ...
- jvm类加载器和双亲委派模型
类加载器按照层次,从顶层到底层,分为以下三种: (1)启动类加载器(Bootstrap ClassLoader) 这个类加载器负责将存放在JAVA_HOME/lib下的,或者被-Xbootcla ...
- DML 触发器2
2.行级触发器的关联标识符 :new,:old >>1. 一般通过:new.filed 引用(filed是trigger_table的字段名) :new :old中filed字段的意义 触 ...
- 双刃剑MongoDB的学习和避坑
双刃剑MongoDB的学习和避坑 MongoDB 是一把双刃剑,它对数据结构的要求并不高.数据通过key-value的形式存储,而value的值可以是字符串,也可以是文档.所以我们在使用的过程中非常方 ...
- 芝麻HTTP: Python爬虫利器之PyQuery的用法
前言 你是否觉得 XPath 的用法多少有点晦涩难记呢? 你是否觉得 BeautifulSoup 的语法多少有些悭吝难懂呢? 你是否甚至还在苦苦研究正则表达式却因为少些了一个点而抓狂呢? 你是否已经有 ...
- T470p VS 2017 上运行 VS 2015 + Qt 5.6.2 + GLSL 400
vs 2017 的qt设置可以按照这篇文章 注意,必须使用qt的安装程序进行安装,否则会出现意想不到的问题(不要简单地把qt的文件拷贝过来..血的教训) 显卡的问题 好不容易编译通过了,一运行报了一个 ...
- Text Document Analysis CodeForces - 723B
Modern text editors usually show some information regarding the document being edited. For example, ...
- Rational Rose_2007的下载、安装与破解--UML建模软件
一.下载Rational.Rose_2007安装包与破解文件 对于Rational.Rose_2007,您可以到我的百度网盘计算机相关专业所用软件---百度云链接下载下载,另外附上安装需要的通行证(破 ...
- 【BZOJ2442】修建草坪(动态规划,单调队列)
[BZOJ2442]修建草坪(动态规划,单调队列) 题面 权限题..洛谷 题解 设\(f[i]\)表示前\(i\)个里面选出来的最大值 转移应该比较显然 枚举一个断点的位置,转移一下就好 \(f[i] ...
- 搬瓦工搭建SS的教程
前言 作者写在前面的话: 应同学的要求在此分享搬瓦工搭建SS的教程,此教程只作为学习之用,因某些原因本教程不适合长期使用,在大家学习之后请删除所做的操作,谢谢. 为方便以后查看,请及时收藏:GitHu ...