总结:条件语句
- if…else…
- switch
- A?B:C
如果A为真,则执行B,否则执行C - A && B
fn && fn()
如果fn存在,则调用fn - A || B
A = A || B
如果A存在,则A等于A,否则A等于B
一、if语句
如果…那么…
1.语法
- if(表达式){语句1}else{语句2}
如果表达式成立,那么语句1执行,如果不成立,则语句2执行 - {}在语句只有一句的时候可以省略,但不建议这么做
2.变态情况
- 表达式里可以变态,如 a = 1
a = 1表示把1赋值给a
a === 1表示a等于1 - 语句1可以变态,如嵌套的 if else(注意:嵌套时可能出现语句只有一个省略{}的情况)
a = 2
if( a < 100){
if( a < 10 ){
}
}//可以省略花括号
- 语句2也可以变态,如嵌套 if else
著名的 else if 其实不是个名字,而是else里面嵌套if省略了else的花括号合成来的 - 缩进也可以变态,如下会输出什么?
答:输出a等于2,因为如果if下面没有花括号则表示省略,省略花括号的if只管下面一个语句
注意:命令行没有行的概念,两个语句在同一行也没有用,逗号表示这句话没完(输出undefined)
a = 1
if(a === 2)
console.log('a')
console.log('a等于2')
3.第一戒律:永远写最没有歧义的语法
最好是不要省略花括号。
二、switch语句
if…else…的升级版,不推荐使用,不太好用,了解
1.语法
switch (fruit) {
case "banana":
//...
break;
case "apple":
//...
break;
default:
//...
}
- fruit是比较,相当于fruit是公主,在下面几个case中选择驸马
2.break
- 大部分时候,省略break你就完了
如果不写break,执行完一个case后就会执行下一个case,这个设计初衷是为了方便多个内容的判断
- 少部分时候,可以利用break
三、问好冒号表达式
表达式1?表达式2:表达式3
一个最简单的if else表达式:(常用语简化if和else里面分别只有一个语句的情况)
return a>b ? a: b 表示如果a>b 返回a,否则返回b
四、&&短路逻辑
- A && B && C && D 取第一个为假的值或者D(都为真取D) 并不会取 true / false
- 用来代替if else
- 如果f1存在,那么输出f1存在
特点:
1.如果 && 前的为真值,它就会去求后面的值(&是且运算)
- A、B均为真,那么A&&B为真,则为B(已经存在真了,就不需要再生成一个真的值)
- A为真,B为假,那么A&&B为假,则为B
- A为假的情况,不管B为什么,那么A&&B为一定为假,直接等于A
2.下面表示:如果console存在,那么看console.log是否存在,如果存在输出hi
ps:IE没有console,那么在第一个就为假,短路了后面都不执行
五、|| 短路逻辑
A || B || C || D 取第一个真值或者D,并不会取 true/false
- 如果a存的则什么都不做,否则a赋值100
- a = 100为保底值