计划安排代码主体
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
var a = prompt("请输入今天星期几:","");
if (a>0&&a<=7){
alert("输入数在1~7之间")
switch(a){
case "1":
document.write("今天星期一,升旗");
break;
case "2":
document.write("今天星期二,校史馆一游");
break;
case "3":
document.write("今天星期三,没课");
break;
case "4":
document.write("今天星期四,半天课");
break;
case "5":
document.write("今天星期五,准备休息");
break;
case "6":
document.write("今天星期六,睡懒觉");
break;
default:
case "7":
document.write("今天周末,准备开班会");
break;
}
}else{
alert("你睡迷糊了吧,输错了!");
}
</script>
</body>
</html>
脚本代码较为基础,所以采用直接写在html文档里,一般项目稍大或者从专业性角度出发,还是另开一个文件夹比较好,这样只是便于初级学习。
略过初级的var
变量声明定义与prompt
输入函数,遇到的就是if
,else
与switch
三个陌生代码。
- if else语句
在认识if else语句之前,先了解if语句。
if语句又称为单分支语句,使用条件判断语句可以在执行某个语句之前进行判断,如果条件成立才会执行语句,条件不成立则语句不执行。其语法结构:
if(条件表达式){
语句块
}
//当条件表达式结果为true时,就执行语句
-如果if后的大括号中的语句块只有一行代码,则可以省略大括。
if else语句
if else是双分支语句,与if语句相比就是多了else及其当中的执行语句。代码如下:
if(条件表达式){
语句块1
}else{
语句块2
}
//当条件表达式结果为true时,就执行语句1
//如果条件表达式结果为false,就执行语句2
跟三目运算符类似,正确(true)就执行前面的语句块,错误(false)就执行后面的语句块。
if else嵌套
if else嵌套语句为多分支语句,相较于前面的单分支与双分支语句具有更多的选择。
代码格式如下:
if (条件表达式1){
语句块1
}else if(条件表达式2){
语句块2
}else if(条件表达式3){
语句块3
}……else{
语句块n
}
可以看出多分支语句与前面两个语句比多了 else if的中间分支,可以记if else的嵌套语句是内外相反的或者嵌套语句就是if else不断嵌套,一个接一个。
执行流程
-
if…else if…else语句执行时,会自上至下依次对条件表达式进行求值判断,
-
如果判断结果为true,则执行当前if后的语句,执行完成后语句结束。
-
如果判断结果为false,则继续向下判断,直到找到为true的为止。
-
如果所有的条件表达式都是false,则执行else后的语句
关于新接触的if else有了一些了解就来看switch case语句。
switch case 属于一种较为特殊的多分支语句,通过表达式的值判断执行的语句。大致代码如下:
switch(变量){
case 表达式1:
执行语句1;
break;
case 表达式2:
执行语句2;
break;
case 表达式3:
执行语句3;
break;
……
default:
执行语句n;
}
switch 语句用于基于不同条件执行不同动作。
switch后面的括号在本案例是需要判断的变量,当然在括号里也可以写运算语句,这样switch语句就会先计算,后面的大括号里是具体的判断与执行代码,把计算出的值与各个case的值依次对比,根据值是否一样执行对应代码,注意switch对比值是将类型和值同时对比的,也就是说,整数型的1
与字符型的"1"
是不一样的,不要搞混了。
另外就是break:
-
如果js脚本代码遇到 break 关键词,它会跳出 switch 代码块。
-
此举将停止代码块中更多代码的执行以及 case 测试。
-
如果找到匹配,并完成任务,则随机中断执行(break)。无需更多测试。
-
break 能够节省大量执行时间,因为它会“忽略” switch 代码块中的其他代码的执行。
-
不必中断 switch 代码块中的最后一个 case。代码块在此处会自然结束。
default
default 关键词规定不存在 case 匹配时所运行的代码。
就是switch计算出的值在case里找不到一个对应的值就执行default(默认)
代码语句,当然要注意default后面是冒号,第一次时我下意识输成分号导致运行错误,于是我将default删除,在输入的值能够在case里找到时还是能够运行的。输入其他值就会报错了。当然default的位置在哪里都可以这个没有什么讲究。一般是把default语句放最后或最前。不过放在哪里都别忘了break
,这个比较重要,default放最前的时候没有他就有玩的了。
另外case语句不止一个case一个值,还可以几个case一个值,
案例代码如下:
switch (new Date().getDay()) {
case 4:
case 5:
text = "周末快到了:)";
break;
case 0:
case 6:
text = "今天是周末~";
break;
default:
text = "期待周末!";
}
若是要用同一个值,将中间内容删除共用一个就行,当然break不能少。如果default在最后我还是建议加上break的,加上没什么坏处,不加也能运行,主要能养成一个下意识的好习惯,看得出来上面的案例没加。
还有case语句也能判断区间,一般简单的数学运算我想都没什么问题,代码展示如下:
<script type="text/javascript">
var num=prompt("请输入一个0-255的数字:","");
switch (true){
case num<0:
console.log("您输入的数字小于了0");
break;
case num>=0 && num<=255:
console.log("您输入的数字在0-255之间");
break;
case num>255:
console.log("您输入的数字大于255")
break;
default:
console.log("您输入了一个无效数字");
break;
}
</script>
为什么用console.log而不是alert,我找到一段话大家可以参考参考:
alert()函数会阻断JavaScript程序的执行,从而造成副作用;
alert只能输出字符串,不能输出对象里面的结构,
alert弹出框需要点击确认比较麻烦,而console.log()仅在控制台中打印相关信息,因此不会造成类似的顾虑。console.log()console.log()可以接受任何字符串、数字和JavaScript对象,可以看到清楚的对象属性结构,在ajax返回json数组对象时调试很方便。
小链接1
小链接2