1:流程控制
JS程序一般是按照书写的顺序来运行的。这种运行称为顺序运行,是程序流的默认方向。与顺序运行不同,另一种运行将程序流转换到脚本的另外的部分。也就说,不按顺序运行下一条语句,而是运行另外的语句。
为了使脚本可以使用,该控制的转换必须以逻辑方式执行。程序控制的转换基于一个“决定“,这个决定结果是真还是假(true或false),来决定程序的运行方向。
2:程序三大结构
- 1:顺序结构
- 2:选择(条件)结构
- 3:循环结构
3:顺序结构
4:选择结构
5:if选择语句
单一选择结构:
if(){}
if(条件){
语句
}
原理:
如果条件为真,则执行下面的语句,否则不执行
if (true) {
alert('不开心');
}
二路选择结构:
if(){}else{}
if (true) {
alert('不开心');
} else {
alert('开心');
}
原理:
如果条件为真则执行if下面的语句,否则执行else下面的语句
三目运算符:?:
多路选择结构:
if(){}else if(){}else if(){}else{}
// 判断成绩等级
var s = 92;
if (s > 90)
alert('A');
else if (s > 80)
alert('B');
else if (s > 70)
alert('c');
else if (s > 60)
alert('D');
else
alert('E');
多路选择结构流程图:
注意:
花括号{}有和没有的区别。只能执行一条语句。
if(6>5)
alert('ok');
else
alert('no');
alert('hehe'); //结果:no hehe
因为,不加{}相当于:
if (6 > 5) {
alert('ok');
} else {
alert('no');
}
alert('hehe');
案例:
输入年份,计算某一年是否是闰年。
请输入年份:<input type="text" id="year"><input type="submit" id="judge" value="判断">
<script>
// 获取按钮元素
var judge = document.getElementById('judge');
// 获取输入框元素
var year = document.getElementById('year');
// 给按钮添加点击事件
judge.onclick = function () {
// 获取年份
var val = year.value;
// 判断用户输入的是否为纯数字
if( isNaN(Number(val)) === true) {
alert('请输入正确的年份!');
} else {
// 判断年份是公元前还是公元
var prefix = val < 0 ? '公元前' : '公元';
// 使用Math.abs()方法:求绝对值
val = Math.abs(val);
// 判断是否为闰年
if((val % 4 === 0 && val % 100 != 0) || (val % 400 === 0)) {
alert(prefix + val + '年是闰年');
} else {
alert(prefix + val + '年是平年');
}
}
}
</script>
应用:
1:判断一个整数,属于哪个范围:大于0;小于0;等于0。
var num = window.prompt('请输入需判断的正数');
if (num > 0) {
alert('大于0');
} else if (num < 0) {
alert('小于0');
} else {
alert('0');
}
2:判断一个整数是偶数还是奇数,并输出判断结果。
var num = window.prompt('请输入需判断的正数');
if (num % 2 === 0) {
alert('偶数');
} else {
alert('奇数');
}
3:开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者体重是否合适。
请输入身高:<input type="text" id="cm" /><br/>
请输入体重:<input type="text" id="kg" /><br/>
检测是否合格:<input type="submit" id="btn" value="检测" />
<script type="text/javascript">
var cm = document.getElementById('cm');
var kg = document.getElementById('kg');
var btn = document.getElementById('btn');
btn.onclick = function () {
var result = kg.value;
var result1 = cm.value;
var result2 = (result1 - 108) * 2;
var result3 = result - result2;
if (result3 > 10) {
alert('太胖');
} else if (result3 < -10) {
alert('偏瘦');
} else {
alert('体重合格');
}
}
6:switch选择语句
语法:
switch(condition){case :break;default:}
case后面的值可以是:常量,变量,表达式
var n =2;
switch (n) {
case "a":
console.log('a');
break;
case 2:
console.log("b");
break;
case true:
console.log('c');
break;
default:
console.log("d");
}
break具体讲解:阻止代码向下一个case运行。防止case穿透。
default具体讲解:
匹配不存在时做的事情。
案例:
输入数字,显示
星
期几。
var week = document.getElementById('week');
var btn = document.getElementById('btn');
btn.onclick = function() {
var val = Number(week.value); //week.value是String类型的 无法和case的数字匹配
switch (val) {
case 1 :
alert('星期一');
break;
case 2 :
alert('星期2');
break;
case 3 :
alert('星期3');
break;
case 4 :
alert('星期4');
break;
case 5 :
alert('星期5');
break;
case 6 :
alert('星期6');
break;
case 7 :
case 0 :
alert('星期7');
break;
default:
alert('非法数字');
break;
}
}
应用:
1:输入分数,判定成绩等级。(if和switch语法)
var score = window.prompt('请输入成绩');
switch (true) {
case score > 90 && score <= 100:
alert('a');
break;
case score > 80 && score <= 90:
alert('b');
break;
case score > 70 && score <= 80:
alert('c');
break;
case score > 60 && score <= 70:
alert('d');
break;
case score <= 60 :
alert('e');
break;
default :
alert('无效成绩');
break;
}
2:输入月份,显示当月的天数。
要求:
1) 利用case穿透简化代码。
请输入月份:<input type="text" id="month" /><br/>
请检测月份:<input type="submit" id="btn" value="检测" /><br/>
<script type="text/javascript">
var month = document.getElementById('month');
var btn = document.getElementById('btn');
btn.onclick = function () {
var result = month.value;
if(result > 0 && result <=12){
switch (result) {
case '1':
case '3':
case '5':
case '7':
case '8':
case '10':
case "腊月":
alert(result + '月有31天');
break;
default :
alert('30天');
break;
}
} else {
alert('无效年份');
}
}
</script>
3.实现两个数的四则运算
var a = 23,b = 5;
var ch = prompt('请输入符号');
switch (ch) {
case "+" :
alert(a + b);
break;
case "-" :
alert(a - b);
break;
case "*" :
alert(a * b);
break;
case "/" :
alert(a / b);
break;
default:
alert('无效符号');
break;
}
4.周一到周五输出working, 周六周天输出relaxing
var date = window.prompt('input');
switch (date) {
case 'monday' :
case 'thesday' :
case 'wendnesday' :
case 'thursday' :
case 'furday' :
alert("wordking");
break;
case '周六' :
case '周日' :
alert('relaxing');
break;
}
综合应用:
1:根据一个数字日期,判定这个日期是这一年的第几天。
例如:20160211,计算后结果为42.
<input type="text" id="date"><input type="submit" value="计算" id="calculate">
<script>
function $(id) {
return document.getElementById(id);
}
var date = $('date'), calculate = $('calculate');
// 添加点击事件
calculate.onclick = function () {
// 获取用户输入的内容
var dateVal = date.value;
var year = parseInt(dateVal / 10000);
var month = parseInt( (dateVal - year * 10000) / 100);
var day = dateVal % 100;
var total = day;
for (var i = 1; i < month; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
total += 31;
break;
case 4:
case 6:
case 9:
case 11:
total += 30;
break;
case 2:
if (year % 4 == 0 && year % 100 != 0 || year % 400 === 0) {
total += 29;
} else {
total += 28;
}
}
}
}
</script>