JavaScript 02 运算符,分支结构
一元换算符
字符串类型 对于字符串,来说自增或自减会自动进行类型转换
1.var str = '10' 自动转换 从string转为number
2.str++ NaN 对于转化不成功的string类型数据会变为NaN
3.关于布尔类型
1为true 0为false
number类型 非0和NaN就是true 自动进行转换
4.关于null类型
自动转换对应Boolean类型 然后再从Boolean转为Number
5.关于undefined
undefined转换不成功 NaN
6.关于Number类型
一元换算符只能和变量一起 不能出现其他的换算符
进行++ 或者 -- 不管++是前置还是后置都是先转换为number
比较运算符(关系运算符)
比较运算符 == 返回的都是boolean类型 要么是true 要么是false
console.log(typeof null)//object
console.log(typeof undefined) //undefined
>大于 小于<
boolean 自动转换 true对应1 number类型转布尔类型
null不会自动转为boolean类型 undefined也不会自动转换布尔类型
==比较的是值
number比较 直接比较大小
number 和 Boolean比较 会把Boolean转为number再比(0,1)
如果number类型和字符串类型比较 如果字符串里面存储的是数值 那么对应的就是数值比较
如果对应的字符串里面存储的是字符串 会自动转为number类型 转不了就是NaN(NaN和任何比都是false)
console.log('a'>1) // NaN //false
字符串跟字符串比较 比较的是ascii码 一套固定的编码 每个字母都有一个对应的编码值(区分大小写)
//a 97 //A 65 //0 48
console.log('a'>'b') //false
console.log('a'>'B') //true
>= <= 只要满足一个就是true
恒等 === 比较值还要比较地址 == 只是比较值
NaN 特性 不能进行比较 返回结果false
逻辑运算符
与 && 同true则为true 其他都是false
& 断路与 (效率低,不用)
console.log('A'<'a' && 2>1) // true
console.log('A'<'a' && 2<1) // false
或 || 一个为 true 就是true
| 断路或 (效率低,不用)
console.log('A'<'a' || 2<1) // true
console.log('a'>'b' || 1>2) // false
非 ! true变false false变true
console.log( ! ('a'<'b') ) ;//false
console.log( ! ('a'>'b') ); //true
//undefined转为number 为NaN
//undefined值 不需要转换 != ===
var num1 , num2=10
console.log(num1!=num2 && num1<num2); // false
console.log(num1!=num2 || num1<num2);//true
三元运算符 三目运算符
布尔类型表达式 ? true的结果:false的结果
console.log(!0?10:20); //10
console.log(1!=1?10:20) // 20
var num = 'a'>'B'?12+'3':45/2
console.log(num); //123
console.log(typeof num); //string
分支结构
浏览器的解析结构顺序为 从上到下 从左之右
分支结构 多个分支 进行其中一个
if(布尔类型表达式){
分支一
}else{
不满足上述条件进入的分支
}
一旦进行其中一个分支就不会再进行下一个
分支块里面执行的语句只有第一句
switch
switch属于分支结果
if里面的表达式为布尔类型 Boolean表达式
switch的值表达式 有确定的值
switch case 一起使用
switch(值表达式){
case 值1:
case 值2:
case 值3:
default:默认的
}