六、运算符
一.逻辑运算符:
多个条件之间的判断 一定会返回一个值
-
判读条件A 布尔类型
判断条件B
同时都满足:
A为真 B 也为真
A && B 与运算符
-
专业的解释:(遇到假的就返回)
A && B
A 为真 返回 B
A 为假 返回 A
-
一个值到底是真还是假?
-
数据 进行识别转换
-
转成布尔类型,改怎么转?
-
六大假值:
"" false 0 undefined null NaN 都是毫无争议的假值
其余都是真值
二.或运算符:(遇到真的就返回)
A || B
A为真 则返回A
A为假 则返回B
与 和 或 结合在一起呢?
1 || 2 && “” //1
因为 1 || (2 &&"") 先&&后||
但是 (1 || 2)&& “” 是""
开发注意的细节:建议不要写很复杂的与或运算,不要引起歧义
(1 || 2)&& “” 直接手动加上括号
三.非与运算符
表达式前面加上一个 !
逻辑非:
强行将表达式转换成为布尔类型(根据假值判断), 然后取反
取反: true 的反面 false false 的反面就是true
一定是一个布尔类型:
两个感叹号连在一起:
取巧写法: 强行将一个值转换成为布尔类型
四.三目运算符:
假设:
性别男 true
性别女false
二选一的时候:用三木运算符选择
有判断条件的
A?B:C
A:条件(true/fasle)
B:选择1(表达式)
C:选择2(表达式)
如果A为真选B
如果A为假选C
let sex = false let type = sex?"男厕所":"女厕所" console.log("我去" + type) //女厕所
也一定会返回一个值: 值要么是B 要么是C
五.比较运算符
3||0?1:false // 1
!> && > || > 三目
A?A:B <=> A || B
A?B:A <=> A && B
六.隐式类型转换: (悄悄的转)
- 重要,难
六大数据类型:
数值 字符串 布尔 undefined null 对象
转数值 Number()
布尔类型转数值:
-
true => 1
-
false => 0
字符串转数值: (一般参与到 乘除法减法等 运算中 特殊的加法: 加号左右两端没有字符串)
- 看起来像数字, 那他就能转
- 不管怎么样转成结果一定数数值类型
- 转不了就是NaN
- “Infinitiy"和"le12”(科学计数法可以转成数字)
- 不同进制"0xaa" “0b101010” “0123123”
- 表达式是不呢个转数字的 值就为NaN
undefined: 值就是NaN
null: 转数值被定义成0
对象:
一般对象转数值 都是NaN
特殊情况
特殊处理,在转字符串中处理
转字符串 String()
使用场景,字符串参与的加法都会优先转字符串.
数字转字符串:
加引号
特殊的表现形式不一样
布尔类型 直接加引号
-
true => “true”
-
false => “false”
-
undefined => “undefined”
-
null => “null”
对象转字符串!!
转布尔类型 Boolean()
-
假:"" 0 undefined null NaN
-
真: 其余