1 - 比较运算符
比较运算符的结果都是 true false
> < >= <=
console.log( 3 > 5); false
console.log( 3 < 5); true
console.log( 13 >= 5); true
console.log(13 <= 5) ; false
注意 >= 大于或等于 返回的值都是true <= 返回的值都是 false
== 等于 只比较值是否相等,不比较数据类型,只要值相等返回 true
console.log(7 == 7); true
console.log(7 == '7'); true
console.log(7 == 9); false
=== 全等 数据类型和值必须完全一样 返回true,否则就是false
console.log(6 === 6); true
console.log(6 === '6'); false
!= 不等 比较是否不相等 不比较数据类型,只要值不相等返回true ,值相等 返回false
console.log('土豆' != 2); true
console.log(7 != 7); false
console.log(23 != '23'); false
!== 全不等 比较是否全不等,数据类型和值,只要有一个不相等,返回true 数据类型和值都一样false
console.log('西红柿' !== '土豆'); true
console.log(34 !== 34); false
isNaN(x) 有参 判断x参数是不是 NaN 非数字和纯数字字符串返回true x 是数字返回false
console.log(isNaN('哈哈哈')); true
console.log(isNaN('12哈哈哈')); true
console.log(isNaN(23)); false
console.log(isNaN('34')); false
不同类型之间比较会发生隐式转 最终把数据隐式转换转成number类型再比较
console.log(true > 0); true
console.log(false > 0); false
console.log('哈哈哈' > 5); false
0 null undefined NaN '' false 转布尔类型是false, 其他的都是 true
2 - 逻辑运算符
&& 与(且) 运算 两边都是true 返回true ,只要有一个false, 结果为false 一假则假
&& 与运算 一假则假
console.log(3 < 5 && 12 > 5); true
console.log(3 > 5 && 12 > 5); false
console.log(3 > 5 && 12 < 5); false
|| 或运算 两边只要有一个true 返回true 两边都是false 返回 false 一真即真
|| 或运算 一真即真
console.log(3 > 5 || 12 > 5); true
console.log(3 > 5 || 12 < 5); false
console.log(3 < 5 || 12 > 5); true
!= 非运算 取反 真变假,假变真
console.log(!true); false
console.log(!false); true
console.log(!(3 > 5)); true
逻辑短路
&& 短路
左边的结果为布尔值的false 右边不执行, 直接返回false
左边的结果不是布尔值的false,隐式数据转换布尔值之后,转为false,返回数据本身
找假 , 如果&& 运算,找不到假,返回最后一个
0 null undefined NaN '' false 转布尔类型是false, 其他的都是 true
|| 短路
找真 同上
3- 短路运算符运用
function getSum(x, y) {
x = x || 0 如果没有参数传递进来就执行 0
y = y || 0 如果有参数传递进来,就执行参数
return x + y
}
let sum = getSum(3, 6)
console.log(sum);
如果输入的不是数字类型,提示用户输入数字类型
let num1 = + prompt('请输入数字类型')
&& 短路 是找假 isNaN(x) 如果是x是非数字 返回true
isNaN(num1) && alert('请输入纯数字')
4- if 语句
单分支
if(条件) {
如果条件为true,执行该处代码,为false,不执行
}
双分支
if(条件) {
如果条件为true,执行该处代码
} else {
条件为false,执行该处代码
}
多分支语句
if(条件1) {
如果条件1为true,执行该处代码,下边的条件分支不执行,如果为false,该处不执行,继续向下执行
} else if(条件2) {
如果条件2为true,执行该处代码,下边的条件分支不执行,如果为false,该处不执行,继续向下执行
} else if(条件3) {
如果条件3为true,执行该处代码,下边的条件分支不执行,如果为false,该处不执行,继续向下执行
} else {
如果以上条件都为false,执行该处代码
}
5 - switch
switch 多分支语句
switch(数据) {
case '值1' :
代码1 如果数据和值1全等(===) 执行代码1
break 组值代码向下执行
以此类推
case 后边的值 和 switch 括号里边的数据是全等
switch 里面的穿透效果
switch 语句里没有 break , 穿透从一个case块 到下一个case块
6 - 三元表达式
三元表达式语法 条件 ? 条件为true执行代码 : 条件为false执行代码
age >= 18 ? alert('进网吧玩') : alert('回家玩泥巴')
求2个数的最大值
let num1 = 20
let num2 = 10
let num = num1 > num2 ? num1 : num2
console.log(`num1和num2的最大值是${num}`);
判断条件
i === 值 ? i = 值 : i
循环 轮播图