一.语句(一个关键字或者多个关键字组成的代码片段)
1.顺序结构
顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的(上-下,左-右)
console.log(1);
console.log(2);
console.l0g(3); //这里报错,报错整个程序停止执行了
console.log(4);
2.选择结构
选择结构表示程序的处理步骤出现了分支,需要根据某一特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。
var str = prompt("请输入字符串:");
if (str === "累了困了") {
console.log("去放松一下");
} else {
console.log("好好学习");
}
3.循环结构
循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。
//document.write()表示到页面上并且标签可以被转译
document.write("<select>");
for (var i = 1900; i <= 5000; i++) {
document.write("<option>" + i + "</option>");
}
document.write("</select>");
重点:包含在{}里面的一条或者多条语句,称之为代码块。
一.if分支语句
if语句的条件可以是任意的表达式,但是结果一定是布尔值(ECMAScript会自动调用Boolean转换函数将这个表达式的结果转换为一个布尔值)
条件结果为真,执行if语句的语句块。 条件为假执行else语句块
1.if语句基本结构 - 单分支
if (条件) {
条件成立执行的代码块;
}
2.if语句基本结构 - 双分支
if (条件) {
条件成立执行的代码块;
} else {
条件不成立执行的代码块;
}
3.if语句基本结构 - 多分支(三种或者三种以上的情况)
if(条件1){
条件1成立执行的代码块;
}
else if(条件2){
条件2成立执行的代码块;
}
else if(条件3){
条件3成立执行的代码块;
}
......
else{
其他条件执行的代码块
}
一.if语句的特点
1.if语句的条件可以是任意的表达式,但结果一定是布尔值.
2.尽量将最大的可能给if语句,因为if语句满足,else形成短路操作(else可以省略).
测试案例:输入年份,计算某一年是否是闰年(闰年能被4整除且不能被100整除,或能被400整除); 判断是数字,并且是四位的数字,判断是否是闰年
var year = prompt("请输入四位的年份:");
// 判断是数字,并且是四位的数字
if (!isNaN(year) && year >= 1000 && year <= 9999) {
// 判断是闰年还是非闰年
if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
alert("是闰年");
} else {
alert("非闰年");
}
} else {
alert("你输入的数字格式有误");
}
switch语句
switch 语句与 if 语句的关系最为密切,而且也是在其他语言中普遍使用的一种流程控制语句。
优势:switch非常适合多分支语句,多分支的情况下优于if语句。
1.switch语句的基本控制结构
switch是多分支语句的关键字,定义switch语句。
case表示每一种情形,原理是对比switch括号里面的值和case后面的值是否全等,如果全等,执行case后面对应的语句块.
break关键字表示switch结束,如果没有break,case具有穿透力,继续执行case后面的其他代码块。
default关键字表示case之外的情形,可以省略不写,类似if语句中else。
switch (值) {//value:值
case 值:
满足case执行的代码块; break;
case 值:
满足case执行的代码块; break;
case 值:
满足case执行的代码块; break;
case之外的情形
}
核心:对比if和switch区别
上面的案例对于if语句,按照顺序,假设输入的是3,必须走3步得到目标,而switch任何时候都是一步到位。
switc
一般情况下,这两个语句是可以相互替换的;
switch语句通常处理case为比较确定的值的情况,而if...else...语句更加灵活,常用于范围判断;
switch语句进行条件判断后直接执行对应的case语句,而if语句根据条件按照顺序执行;
所以当分支比较少的时候if语句的执行效率比switch语句高;反之switch效果更高。
测试案例:输入分数,判定成绩等级(if和switch两种写法)(5个等级0-100)
var score = +prompt("请输入一个分数:");
if (score === 100) {
console.log("A");
} else if (score < 100 && score >= 90) {
//不允许使用90<=score<=100
console.log("B");
} else if (score < 90 && score >= 80) {
console.log("C");
} else if (score < 80 && score >= 60) {
console.log("D");
} else if (score < 60 && score >= 0) {
console.log("E");
} else {
console.log("输入有误");
}
var score = +prompt("请输入一个分数:");
switch (true) {
case score === 100:
console.log("A");
break;
case score < 100 && score >= 90:
console.log("B");
break;
case score < 90 && score >= 80:
console.log("C");
break;
case score < 80 && score >= 60:
console.log("D");
break;
case score < 60 && score >= 0:
console.log("E");
break;
default:
console.log("输入有误");
}
三目运算符,三元运算符?:
1.基本结构
条件?语句1:语句2
解读:问号前面的条件如果满足(true),执行语句1,否则执行语句2
注意:语句1和语句2是一条语句,不是语句块,取代简单的分支语句。
2.特点
2.1.整个运算符带有返回值。
var result = 条件?语句1:语句2;
2.2.三目运算符可以嵌套使用,三目运算符里面有三目运算符...
//案例一:输入一个数字,如果数字小于10,前面补0
var num = prompt("请输入一个数字:");
if (num < 10) {
console.log("0" + num);
} else {
console.log(num);
}
//案例二:声明三个数字,输出最大的那个数字。
var a = 13;
var b = 34;
var c = 24;
var max = a > b ? (a > c ? a : c) : b > c ? b : c;
console.log(max);