if else 语句
- 通过一个 if 语句或 else 语句来决定代码是否执行
语法:
if (condition)
statement1
[else
statement2]
-
statement1:当condition为真时执行的语句。可为任意语句,包括更深层的内部if语句。要执行多条语句,使用块语句 ({ ... })将这些语句分组;若不想执行语句,则使用空语句。 -
statement2:如果condition为假且else从句存在时执行的语句。可为任意语句,包括块语句和嵌套的if语句。
- 多层
if...else语句可使用else if从句。注意:在 Javascript 中没有elseif(一个单词)关键字。
语法:
if (condition1)
statement1
else if (condition2)
statement2
else if (condition3)
statement3
...
else
statementN
- 不要将原始布尔值的
true和false与Boolean对象的真或假混淆。任何一个值,只要它不是undefined、null、0、NaN或空字符串(""),那么无论是任何对象,即使是值为假的 Boolean 对象,在条件语句中都为真。例如:
var b = new Boolean(false);
if (b) //表达式的值为 true
- 建议不要在条件表达式中单纯的使用赋值运算,因为粗看下赋值运算的代码很容易让人误认为是等性比较。比如,不要使用下面示例的代码
if (x = y) { //这里是赋值,并不是等性比较
/* do the right thing */
}
//如果需要在条件表达式中使用赋值运算,用圆括号包裹赋值运算
if ((x = y)) {
/* do the right thing */
}
if else 示例
判断奇偶数
//偶数:能被2整除;奇数:不能被2整除
function oddOrEven(num){
if (Number(num) % 2 === 0) {
console.log(`${num}->even`)
} else if(Number(num) % 2 !== 0 && !isNaN(Number(num))){
console.log(`${num}->odd`)
} else {
console.log("number is invalid.")
}
}
oddOrEven(89) //89->odd
oddOrEven(90) //90->even
oddOrEven("80") //80->even
oddOrEven("八十") //number is invalid.
判断成绩
//根据 0-100 的数字输出成绩 90-100-A 80-89-B 70-79-C 60-69-D 0-59-E
function grade(para){
let grade = parseInt(para);
if (grade >= 90 && grade <= 100 ) {
console.log(`grade A:${grade}`)
} else if (grade >= 80 && grade <= 89) {
console.log(`grade B:${grade}`)
} else if (grade >= 70 && grade <= 79){
console.log(`grade C:${grade}`)
} else if (grade >= 60 && grade <= 69){
console.log(`grade D:${grade}`)
} else if (grade >= 0 && grade <= 59){
console.log(`grade E:${grade}`)
}
}
grade(90) //grade A:90
grade("46") //grade E:46
grade("0分") //grade E:0
grade("70分") //grade C:70
判断闰年
//判断闰年:四年一闰;百年不闰,四百年再闰
//世纪闰年:公历年份为整百,且是400的倍数
//普通闰年:公历年份是4的倍数,且不是100的倍数
function bissextileYear(para){
var bissextile = parseInt(para)
if (bissextile % 400 === 0) {
console.log(`世纪闰年:${para}`)
} else if(bissextile % 4 === 0 && bissextile % 100 !== 0) {
console.log(`普通闰年:${para}`)
} else {
console.log(`不是闰年:${para}`)
}
}
bissextileYear(1900) //不是闰年
bissextileYear("2500年") //不是闰年
bissextileYear(2400) //世纪闰年:2400
bissextileYear(2008) //普通闰年:2008
bissextileYear("2024年") //普通闰年:2024
switch 语句
条件判断语句的一种,常用于变量的判断。
语法:
switch (expression) {
case value1:
// 当 expression 的结果与 value1 匹配时,执行此处语句
[break;] //如果忘记添加 break,那么代码将会从值所匹配的 case 语句开始运行,然后持续执行下一个 case 语句而不论值是否匹配
case value2:
// 当 expression 的结果与 value2 匹配时,执行此处语句
[break;]
...
case valueN:
// 当 expression 的结果与 valueN 匹配时,执行此处语句
[break;]
[default:
// 如果 expression 与上面的 value 值都不匹配,执行此处语句
[break;]]
}
我能把 default 放到 case 之间吗?可以啊!JavaScript 会在它找不到匹配项时跳回到那个 default :
var fo = 5
switch(fo){
case 2:
console.log(2)
default:
console.log("default")
case 3:
console.log(3)
}
//输出 default 3
switch(fo){
case 2:
console.log(2)
break
default:
console.log("default")
break
case 3:
console.log(3)
break
}
//输出 default
switch(fo){
case 2:
console.log(2)
break
default:
console.log("default")
break
case 3:
console.log(3)
break
case 5:
console.log(5)
break
}
//输出 5
switch 示例
判断月份天数
//根据1-12的数字来输出一个月有多少天,不考虑闰年
var num = 6
switch (num) {
// case 1,3,5,7,8,10,12: case 之间不能用逗号分隔,但可以在相同功能case后不写break
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
console.log(31)
break
case 2:
console.log(28)
break
case 4:
case 6:
case 9:
case 11:
console.log(30)
break
default:
console.log("输入有误")
break
}
判断成绩
// 判断成绩
function levelScore(score){
score = parseInt(score)
var levelScore = score >= 0 && score <= 100 ? parseInt(score / 10) : -1
switch(levelScore){
case 10:
case 9:
console.log("A")
break
case 8:
console.log("B")
break
case 7:
console.log("C")
break
case 6:
console.log("D")
break
case 5:
case 4:
case 3:
case 2:
case 1:
console.log("E")
break
default:
console.log("有误")
break
}
}
levelScore(90) //A
levelScore(120) //有误
levelScore(54) //E
levelScore("89分") //B