09循环
(1)for循环
①标准写法:
for(初始条件;结束条件;迭代){代码块}
for( var i = 0; i < 5; i++ ){//代表永远不会结束
console.log('for循环里的i值为:', i);
};
在for循环括号里边声明的变量i是全局变量。
其他写法(不建议):
var a = 0; //初始条件
for( ; a < 5; ){
console.log('我是初始条件在外边的for循环');
a++;//迭代
};
②嵌套:
for与for:
var num = 0;
for (var a = 0; a < 10; a++){//10次
for(var b = 0; b < 9; b++){//9次
num++;
}
}
console.log(num);//90
for与if:
<style>
.pink{color:hotpink;}
.blue{color:blue;}
</style>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</body>
<script>
var oLi = document.querySelector('ul').children;
for( var i = 0; i < 8; i++){
if(i%2){
oLi[i].classList.add('pink');
}else{
oLi[i].classList.add('blue')
}
}
</script>
③for in
专门用来遍历对象的
var obj = {
nickname: '小明',
age: 3,
hobbies: ['sing', 'jump', 'rap','basketball']};
for( var key in obj ){
console.log(key);//key是属性名
console.log(obj[key]);
// console.log( obj.key );//obj的key属性
};
console.log(key);
④continue,break
continue 打断当前循环
break 打断
//打断y===5时
for( var y = 0; y < 10; y++ ){
if( y === 5 ) continue
console.log(y);
};
//i===10时直接全打断
for( var i = 0; i < 20; i++ ){
if( i === 10 ) break
console.log(i);
};
⑤起名字
ming://ming就是这个for循环的名字
for( var e = 0; e < 4; e++ ){//4
if( e === 1 ) continue ming
console.log(e);
};
⑥应用
做一些相似的事情
1>遍历数组:
var arr_a = ['你','好','宠','儿'];
for( var a = 0; a <arr_a.length; a++){
console.log( arr_a[a]);
}
2>九九乘法表:
<body>
<div class = "box"></div>
</body>
<script>
var box = document.querySelector('.box');
console.log(box);
//这里我们利用表格来做
var table_one = document.createElement('table');
// table_one.style.cssText = 'width: 700px;height: 400px;text-align: center;border-collapse: collapse;';
for( var i = 1; i <= 9; i++ ){//能创建9个tr标签
var tr = document.createElement('tr');
// tr.style.border = '1px solid black';
for( var k = 1; k <= i; k++ ){
var td = document.createElement('td');
td.innerText = k + '*' + i + '=' + i*k;
// td.style.border = '1px solid black';
tr.append( td );
};
table_one.append( tr );
};
box.append(table_one);
</script>
3>冒泡排序
下边将2,4,1,3,5
从大到小排序
2,4,1,3,5
第一轮:
对比第一个数字和第二个数字 2,4,1,3,5
对比第二个数字和第三个数字 4,2,1,3,5
对比第三个数字和第四个数字 4,2,3,1,5
对比第四个数字和第五个数字 4,2,3,5,1
第二轮:
对比第一个数字和第二个数字 4,2,3,5,1
对比第二个数字和第三个数字 4,3,2,5,1
对比第三个数字和第四个数字 4,3,5,2,1
第三轮:
对比第一个数字和第二个数字 4,3,5,2,1
对比第二个数字和第三个数字 4,5,3,2,1
第四轮:
对比第一个数字和第二个数字 5,4,3,2,1
总之:一共会进行该数组长度-1轮比较,第一轮将会得到最大(最小)的数
案例中,外层循环表示走了几轮(数组长度-1),内层for循环表示每轮循环中比较了几次
var arr = [2,4,1,3,5];
for( var c = 0,length = arr.length; c < length - 1;c++){
for ( var d = 0;d < length - 1 - c; d++){
if(arr[d] < arr[d+1]){//判断是否需要调换数据的位置
var little = arr[d];//先保存下来
arr[d] = arr[d+1];
arr[d+1] = little;
}
}
}
console.log(arr);
(2)while循环
while( 判断条件 ){ 如果判断条件为真,就会走这个代码块里边的代码 }
var i = 0;
while( i < 10 ){
console.log(i);
i++;
};
do while 后置判断
do{//不管判断为真还是假都先走一次
console.log(i);
i++;//1
}while( i > 10 );
应用:
var result;
do{
result = prompt( '太阳从东边升起吗', '不是' );
}while( result !== '是' );
//必须写输入“是”,否则一直弹出该窗口
(3)switch循环
switch( 判断什么东西 ){ case 某条件: 语句 }
var obj = { nickname: '小明', property: '阿姨' };
switch( obj.property ){
case '阿姨':
console.log('给阿姨倒一杯卡布奇诺');
break;
case '叔叔' :
console.log('泡一杯茶');
break;
default ://default默认
console.log('hello 小明');
};