八、条件语句
1.if
主要用于判断从上到下执行,如果有一项判断成功后面的将再执行
<script>
// if 语句 主要用作判断
// 语法:
// if(表达式){
// 表达式结果为true,执行的语句;
// }
// if(10>20){
// console.log('if 表达式值为true执行的语句');
// }else{
// console.log('if 表达式为false行的语句')
// }
// 当有if else if else的时候,if条件为真,执行if。else if条件为真,执行else if,但前提是他上面的if 条件为假,即false。当条件都不满足的时候执行else里面的代码
/*var a = 30;
var b = 10;
if(a>b){
console.log('if进来了');
}else if(a>b){
console.log('else if进来了');
}else{
console.log('else 进来了');
}*/
/*// 小练习,判断用户输入的数是奇数还是偶数
var num = Number(prompt('请输入一个数'));
//需要转化为数字类型
if(num%2==1){
console.log('您输入的数是奇数');
}
else if(num%2==0){
console.log('您输入的数是偶数');
}
else{
console.log('您输入数不符合规范,请重新输入');
};
//NaN不能直接判断,需要使用isNaN(num)判断*/
var a = '0';
//重复声明不会报错,但是下面的内容会覆盖上面的内容
var a = null;//false 未产生结果
var a = undefined;//false 未产生结果
var a = 1;//true
var a = 0;//false
var a = '';//false
// 字符串有值就是true,无值就是false
if(a){
alert("正确");
}
</script>
2.switch
<script>
/*switch的语法
switch(表达式){
case 值: 复合条件要执行的代码
break;跳出循环
case 值:
复合条件要执行的代码
break;跳出循环
default://类似于if条件语句中else的值
代码
break;
}
case 的值必须是常量
常量就是不能修改的值*/
/*var a = prompt("请输入英文字母:")
switch(a){
case "A":
console.log("输出我是A");
break;//什么时候碰到break什么时候停止执行
case "B":
console.log("输出我是B");
break;
case "C":
console.log("输出我是C");
break;
default :
console.log("没找到");
break;
}*/
//当条件符合时执行case里面的代码,如果不写brake,就会往下执行代码,直到遇到brake为止。
//小练习,用户输入月份,控制台打印这个月有多少天
var month =Number( prompt('请输入您想知道的月份'));
switch(month){
case 1,3,5,7,8,10,12:
console.log('这个月有31天');
break;
case 2:
console.log('这个月有28天');
break;
case 4,6,9,11:
console.log('这个月有30天');
break;
default:
console.log('您输入的内容有误,请重新输入!');
break;
}
//老师版
var month = prompt('请输入月份');
switch(month){
case '1':
case '3':
case '5':
case '7':
case '8':
case '10':
case '12':
console.log('31days');
break;
}
总结:当分支较多时,使用Switch效率较高,因为switch是随机访问的,当确定了表达式的结果,会直接跳到符合的分支上
switch 为什么会使用的比较少?是因为switch只能处理常量,也就是值不能改变
</script>
3.continue和break语句
只要遇见continue就退出本次循环,直接跳到i++
break:在循环中使用,则立即跳出该次循环,然后执行下次循环
九、循环语句
1.while
<script>
/*while循环
什么是循环 反复执行
但是循环不能无限执行(无限执行下去的是死循环)
while 语法规则:
var 变量=表达式;
while(循环条件){
循环体(也就是循环执行的代码)
计数器 变量++;
}*/
/*var i = 1;
while(i<=10){
console.log("打印出来的循环是:"+i);
i++;
//第一遍 i=0 0<10 条件满足 执行代码
//重复以上代码第十一遍
//11<10不成立 跳出循环
}*/
/*//小练习 求1-100所有是3的倍数的数
var i = 0;
while(i<=100){
//while 里面不能写两个条件值
if(i%3 == 0){
console.log(i);
}
i++;
}*/
</script>
2.do while
<script>
/* do while语法:
do{
循环体
计数器
}while(循环条件)
while和do while区别
do while 无论条件真假都会执行一次,也就是最少执行一次
而while循环 是先判断条件所以条件不满足是,一次也不会执行*/
var i = 11;
do{
console.log('这是do while打印的值');
i++;
}while(i < 10)
</script>
3.for循环
<script>
/*for循环语法:
for(表达式1;表达式2;表达式3){
循环体
}*/
/*for(var i=0;i<10;i++){
console.log('for循环打印的值',i);
}
//0~9一共十次
//for的表达式1,只执行1次
//表达式1>表达式2>循环体>表达式3>表达式2>条件符合到循环体||条件不符合结束 循环*/
//小练习 求1-100数字的和
var sum = 0;
for(var i=0;i<=100;i++){
sum = sum+i;
}
console.log('1-100的和是:',sum);
/*// 求输出用户,输入行和列 的数字,我们输入相应的*,如用户输入 2行3列,我们输出***
// ***
// 转义字符 \n
var str ='';
var num1 = parseInt(prompt('请输入行的个数'));
var num2 = parseInt(prompt('请输入列的个数'));
for(var i=0;i<num1;i++){
for(var j=0;j<num2;j++){
// console.log('*'+'\n');
str += '*';
}
// console.log('\n');
str += '\n';
}
console.log(str);*/
</script>
for的冒泡排序
// 冒泡排序:是一种简单的排序算法,一次比较两个,不符合要求就交换,经过多次循环,符合要求的就会慢慢上浮
// 1.比较相邻的两个元素,如果前一个比后一个大,则交换位置
// 2.比较完一轮以后,我们能确定最后一个元素是它们当中最大(或最小)的元素
// 3.这时候最后一个元素因为已经是最大的了,所以第二回合就不再参与比较了
<script>
var arr = [1,3,6,5,4,2];
for(var i = 0;i < arr.length-1;i++){//外层for循环代表回合数,5个数有4回合,6个数有5回合
for(var j = 0;j<arr.length-i-1;j++){//交换的次数,总的长度-回合数-1
//比较相邻的两个元素
if(arr[j] > arr[j+1]){
//当左边大于右边
var temp = arr[j];//把左边的数据给中间人先存着
arr[j]=arr[j+1];
arr[j+1] = temp;//将刚才存在中间人里的值拿出来
}
}
}
console.log(arr);
//将冒泡排序封装成函数,要循环的的数组由参数提供,并打印出冒泡排序后的数组
function getSort(arr){
for(var i = 0;i < arr.length-1;i++){
for(var j = 0;j<arr.length-i-1;j++){
if(arr[j] > arr[j+1]){
var temp = arr[j];
arr[j]=arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
//函数的调用
var arr1 = getSort([12,5,8,6,4,7]);
console.log('冒泡排序的函数算法结果为',arr1);
</script>