if
格式
if(条件表达式){
条件满足执行的语句;
}
let age = 19;
if(age >= 18){
console.log("成年"); // 执行
}
console.log("未成年"); // 不执行
let age = 17;
if(age >= 18){
console.log("成年"); // 不执行
}
console.log("未成年"); // 执行
特点
当条件表达式为真的时候就会执行{}中所有的代码, 并且只会执行一次
if…else
格式
if(条件表达式){
条件成立执行的语句;
}else{
条件不成立执行的语句;
}
特点
- 当条件满足就执行if后面{}中的代码
- 当条件不满足就执行else后面{}中的代码
- 并且两个{}只有一个会被执行, 并且只会被执行一次
let age = 17;
if(age >= 18){
console.log("成年"); // 成立执行
}else{
console.log("未成年"); // 不成立不执行
}
console.log("abc"); // 永远执行
if…elseif…else
格式
if(条件表达式A){
条件A满足执行的语句;
}else if(条件表达式B){
条件B满足执行的语句;
}
… …
else{
前面所有条件都不满足执行的语句;
}
let age = 4;
if(age >= 18){
console.log("上大学"); // 4 不大于18 不执行
}else if(age >= 12){
console.log("上中学"); // 4 不大于12 不执行
}else if(age >= 6){
console.log("上小学"); // 4 不大于6 不执行
}else{
console.log("在家玩"); // 满足条件 执行
}
console.log("选择结构后面的代码"); // 不在if语句中永远执行
特点
会从上至下的依次判断每一个条件表达式, 哪一个条件表达式满足, 就执行哪一个条件表达式后面{}中的代码
如果前面所有的条件表达式都不满足, 就会执行else后面{}中的代码
并且众多的大括号只有一个会被执行, 并且只会执行一次
注意
- 对于非布尔类型的数据, 会先转换成布尔类型再判断
if(1){ // 1 转为 true
console.log("语句A"); // 执行
}
console.log("语句B"); // 执行
if(0){ // 0 转为 false
onsole.log("语句A"); // 不执行
}
console.log("语句B"); // 执行
if(null){ // null 转为 false
onsole.log("语句A"); // 不执行
}
console.log("语句B"); // 执行
- 对于==/===判断, 将常量写在前面
let num = 10;
if(5 == num){ // 如果误写为 num = 5 会将5 的值 赋给 num
console.log("语句A"); // 不执行
}
console.log("语句B");
- if/else if/else后面的大括号都可以省略, 但是省略之后只有紧随其后的语句受到控制
if(false)
console.log("语句A"); // if(false) 控制的语句 不会执行
console.log("语句B"); // 不受 if(false) 控制 会执行
- 在JavaScript中分号(;)也是一条语句(空语句)
if(false); // 分号结尾相当于单独的语句, 不能控制后边的语句
{
console.log("语句A"); // 执行
console.log("语句B"); // 执行
}
- if选择结构可以嵌套使用
if(true){
if(false){
console.log("语句A1");
}else{
console.log("语句B1");
}
}else{
if(false){
console.log("语句A2");
}else{
console.log("语句B2");
}
}
- 当if选择结构省略大括号时, else if/else会自动和距离最近没有被使用的if匹配
if(0)
if(1)
console.log("A");
else
console.log("B");
else
if (1)
console.log("C");
else
console.log("D");