JavaScript判断语句

判断语句分两大类跟一个小类,常用的if与相对不怎么常用的switch,没错switch当然是判断语句。

不要忘了常用的三目运算符:x ? y : z

不过在讲两者之前,还是有些基础知识需要介绍一下,本车很稳,放心乘坐。

运算符

运算符描述例子
==等于1 == 8 // false
===全等(值和类型)5 === 5 //true;5 === "5" // false
!=不等于1 != 8 // true
!==不全等1 !== '1' // true
>大于1 > 8 // false
<小于1 < 8 // true
>=大于或等于1 >= 8 // false
<=小于或等于1 <= 8 // true
&&且(全是真才是真)1 == '1' && 2 == 2 // true
||或(有真即为真)1 === '1'2 == 2 // true
!非(真假取反)!true // false

以上都是支持连续运算的(从左往右),比如:1 == 1 != '1',当然也支持括号,但是括号不代表优先级,只代表一体性,比如:1 == (1 != '1')


if语法

判断是否为真,为真则执行。

if单独

形如:

// 单句
if(条件) 语句

// 多语句
if(条件) {
    语句
}

为单独的if语句,两者区别在于后面语句是否为单句,若单句则推荐使用无大括号的,非单句则必须使用大括号。

不要抬杠,不论是美感还是规范,现代前端都应该在单句情况下使用无大括号模式,详情请查阅 GitHub说明

所谓单句,就是指无空格间断的语句,所以像包含 let function class 等等语法,都不属于单句 ,切记!

if...else语句

形如:

// 都是单句
if(条件) 语句1
else 语句2

// 单双混合
if(条件) {
    语句1
} else 语句2

// 单双混合
if(条件) 语句1
else {
    语句2
}

// 多语句
if(条件) {
    语句1
} else {
    语句2
}

与if单独语法比起来多了一个else语法,很明显,就是当不满足if条件的时候,即语句1不执行的情况下,会执行else下的语句2。

不要抬杠,不论是美感还是规范,现代前端都应该在if大括号结束的后面直接空格加上else或if else,详情请查阅 GitHub说明

if...else if...else if...(else)多判断语句

形如:

// 不做单句讲解,多语句情况参考上面

// if与else if还有else同在情况
if(条件1) 语句1
else if(条件2) 语句2
else if(条件3) 语句3
...
else if(条件n) 语句n
else 语句4

// 只有if与else if
if(条件1) 语句1
else if(条件2) 语句2
else if(条件3) 语句3
...
else if(条件n) 语句n

实例如下

let month = 3 // 这个是月份,获取方式随意,可以是任意整数(其他情况暂不考虑),使用if语句可以全部解决
let result = '' // 保存结果

if(month >= 1 && month <= 3) result = '第一季度'
else if(month >=4 && month <= 6) result = '第二季度'
else if(month >= 7 && month <= 9) result = '第三季度'
else if(month >= 10 && month <= 12) result = '第四季度'
else result = '非法值'

console.log(result) // 打印结果

使用if语法逻辑处理是非常好用的,也可以嵌套使用等,灵活性很高,也非常简单。

具体其他各种判断与情况,就会根据业务来处理了,这里不做一一讲解。


switch语法

switch算是异常简单逻辑判断,不对,严格来说算是逻辑匹配,

形如:

let n = 1

// 不赘述单句问题
switch(n)
{
case 1:
  语句1
  break;
case 2:
  语句2
  break;
default:
  n 与 case 1 和 case 2 不同时执行的代码
}

这里的case可以和if里面的if与else if相对照,default对比else即可。区别在于if是可以判断条件,而case只能是匹配,就是两者 === 情况下才行。

例如:

let day = 1

switch(day) {
    case day < 2:
        console.log('判断')
        break
    case '1':
        console.log('字符串')
        break
    case 1:
        console.log('数字')
        break
}

// 结果是"数字"

眼尖的同学可能看到上面似乎有问题,少了default?这是js,无default是合法的,跟else if语句没有else一样合法。

记住switch是匹配,不是判断。

break的作用是跳出switch的意思,就是下面代码不再执行,也就是说如果不带break的语句恰好是被匹配到的语句,那么其下面的语句将无条件执行。请务必带上break,除非没有是最后一种匹配结果或default。


三目运算符

形如:条件 ? 单句1 : 单句2 形式的表达式。

问号后面单句1是在条件为真的情况下执行,冒号后面单句2是条件为假的情况下执行。

记住一句话:如果怎样,就这样,否则那样

上面就是使用三目运算符的场景了,例子如下:

let a = 3
let b = 0

a > 0 ? b = 1 : b = -1 // 理解就是,如果a大于0,b就等于1,否则b等于-1,所以结果是b等于1

三目运算符小技巧:

let a = 1
let b

// bad
b = a > 0 ? true : false // 坑爹的三目运算符写法

// good
b = a > 0 // 上一种坑爹是因为都是废话,比较运算符返回的就是布尔值

// best
b = !!a // !!相当于new Boolean(a),强制转换成布尔值,多炫酷

三木运算符坑爹的是可以套用,比如:a > 0 ? a > 0 ? b = 1 : b = -1 : a > 0 ? b = 1 : b = -1,相信我,你这样用,会被打死。


总结

判断语句使用场景
if单逻辑,或多逻辑,或懒得写三木与switch。
switch数据匹配情况下,比如明确知道结果是什么,例如错误码处理或日期时间处理。
三目运算符是非逻辑,仅仅两个逻辑情况下,优先使用。


 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值