循环分为前测循环和后测循环;

 

前测循环:

while、for

后测循环

do while;

一共是三个循环

if判断

如下

if(a>20){
console.log("a是大于20的一个数")
}
else if(a<0){
console.log("a是小于0的一个数")
}
else{
console.log("a不大于20||a不小于0")
}

while循环

while属于前测试循环语句;

var i=0;
while(i<10
){
i+=2;
}
//
在这个循环中,i开始是0;每次循环都是递增2;只有i的值小于10;循环就会继续执行下去;
//如果里面美誉哦i+=2
;就是个死循环;

do while 循环

do while循环是一种后测试循环语句;只有循环体重代码执行后才会判断条件;用于循环体中代码至少要被执行一次的情况下;

如下:a无论大不大于10,都是会输出a是大于10的

var a=2;
do
{
console.log("a是大于10");
a-=2;
}
while(a>10)

for循环

for循环是最屌的!也是最常用的;

for循环和while实现一样的功能;while循环做不到的,使用for循环同样做不到;for循环知识while循环的加强版!

ECMAScript不存在块级作用域;

for循环中的初始化表达式,控制表达式和循环后表达式;都是可选的了如果都不写;就是创建一个死循环;

for(var i=0;i<10;i++ ){
console.log("i是一个小于10的数")
}

 

for-in 枚举循环

for-in是精准是迭代语句,可以用来枚举对象的属性;

for(windowValue in window){
console.log(windowValue);
}

枚举出来的如下图;

232

`为了保证使用局部变量;最好在var一下变量

for-in循环输出的属性名的顺序是不可预测的;所有属性都会返回一次,但是顺序不同的浏览器是不同的;IE和chrome就不一样;因为对象就是一个无序的集合;(数组是有序的)

注意:如果表示迭代的变量值为null或者undefined;for-in语句会抛出错误;ECMAScript更正了这个行为了。不跑错误了,知识不执行循环体;

处理方法:为了最大限度的处理兼容性,建议使用for-in循环之前,先检测确认该对象不是null或者undefined;

(safari3以前的版本for-in语句中存在一个bug,该bug会导致某些属性被返回两次)

上面是三个循环;

判断好像也有三个:if判断;三木运算符判断;try cath判断;

———————分割线————————

label语句: 使用label语句可以在代码中添加标签,以便在将来由break和continue语句引用;加标签的语句一般与for循环搭配使用;

break和continue语句

作用:在循环中精确的控制代码的执行;

break语句会立即退出循环,强制执行循环后面的语句;

continue:属于小退,会继续执行下次循环;

 

var num=0;
for(var i=1;i<10;i++
){
if(i%5==0){
break;
}
num++;
}
console.log(num);
//4;
// break
直接退出循环,执行循环后面的代码
;
var num2=0
;
for(var j=1;j<10;j++
){
if(j%5==0){
continue;
}
num2++;
}
console.log(num2);
//8
//continue
是小退,只会结束本次循环,还会进行下次的循环。因为少执行了一次num2++;所以结果是num8

`加label标签,和不加的区别:如下:

var num = 0;
for (var i = 0; i < 10; i++
) {
for (var j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
break;
}
num++;
}
}
console.log(num);
//95

var num = 0;
labelTest:for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
break labelTest;
}
num++;
}
}
console.log(num);
//55

如果两个循环都自然结束,num最后的结果是100;break语句带了一个参数,返回到标签;导致break语句不仅退出了for语句,也退出了外出的i的for循环;

var num = 0;
for (var i = 0; i < 10; i++
) {
for (var j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
continue;
}
num++;
}
}
console.log(num);
//99

var num = 0;
labelTest:for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
continue labelTest;
}
num++;
}
}
console.log(num);
//95

continue用label标签只是退出里面的循环,外面的还是会继续的;

使用label标签的时候,一定要使用描述性很明确的标签爱,并且不要嵌套过多的for循环;否则调试起来就悲了个催了!

with语句(不建议用,会导致性能下降很多,同时会给调试代码造成困难;而且严格模式下不允许使用with,否则会视为语法错误;):

<script>
var aTestObject={
"search":"searchValue",
"hostname":"hostnameValue",
"href":"hrefValue"
};
var qs=aTestObject.search;
var hostName=aTestObject.hostname;
var url=aTestObject.href;
console.log(qs);//searchValue
console.log(hostName);//hostnameValue
console.log(url);//hrefValue
</script
>

`

    var aTestObject={
"search":"searchValue",
"hostname":"hostnameValue",
"href":"hrefValue"
};
/* var qs=aTestObject.search;
var hostName=aTestObject.hostname;
var url=aTestObject.href;*/
//
换成with
;格式如下!
with(aTestObject){
var qs=search;
var hostName=hostname;
var url=href;
}
console.log(qs);//searchValue
console.log(hostName);//hostnameValue
console.log(url);//hrefValue

switch语句与if语句的关系最密切,与C语言最接近,在其他语言中普遍使用的一种流控制语句的。

switch语句是为了让开发人员免于写if else else-if这种语句;

    /*传统的if else*/
/* var i=0;
if(i===25){
alert("
数字
25")
}else if(i===35){
alert("
数字
35")
}else if(i===45){
alert("
数字
45")
}else if(i===55){
alert("
数字
55")
}else{
alert("
不是整除5的数
")
}*/
/*cwitch
的写法
*/
var i=0;
switch (i){
case 25:
console.log("数字25");
break;
case 35:
console.log("数字35");
break;
case 45:
console.log("数字45");
break;
case 55:
console.log("数字55");
break;
default :
console.log("不是整除5的数");
}

`通过为每个case后面加一个break语句,就可以避免同时执行多个case代码的情况了,如果需要混合使用;不要忘了添加注释,说明下原因或好处,方便以后的维护;

var i=35;
switch (i
){
case 25:
/*合并两种情形,*/
case 35:
console.log("数字25或者35");
break;
case 45:
console.log("数字45");
break;
case 55:
console.log("数字55");
break;
default :
console.log("不是整除5的数");
}

switch语法的特点:

1、可以在switch语句中使用任何数据类型(很多其它语言中只能使用数值),使用字符串,对象都可以;

2、每个case的值不一定是常量,也可以是变量,甚至是表达式;

3、switch语句在比较值时使用的是全等操作符,因为不会发生类型转换。(字符串“10”不等于数值10;)

`switch可以代替复杂的if else

~

~~~~~~