JavaScript中不同数字类型运算符之间的操作,例如整形和字符串型比大小,比较是否全等。不同数据类型的取反,两个表达式的取与,取或。 不同数字类型运算符之间的操作 比较运算符
比较运算符 : > ,< >= , <= ,== ,!=, =, !,返回值是布尔类型
- 都是number型,大小进行比较
- 都是string型,按位按照
ASCII表
[^ASCLL]进行比较- number,string :隐式调用Number()把string 转为number进行计算
==
:值相等===
:值相等,数据类型相同
console.log(2 > "100"); //false "100"转为 100 与2进行比较
console.log("234" > "100"); //true 这种比较为ASCII码比较,依次取每个字符,字符转为ASCII码进行比 较
console.log("15" > "9"); //false
console.log(15 > 9); //ture
console.log(12 == "12"); //true
console.log(1 == true); //ture Number(true)转换成1
console.log(0 === false); //false
console.log(0 == undefined); //false Number(undefined)转换成NaN
console.log(0 == ""); //true
console.log(0 == " "); //true
算术运算符:+,-,*,/,%,++,--,**
console.log(1 + 133); //134
console.log(1 + "133"); //1133
console.log(1 - "133"); //-132
console.log(1 - "abc"); //NAN 直接是非数字类型
逻辑运算符:隐式调用Boolean()判断真假
0
,false
,null
,undefined
,NaN
,""
这些为假&&
:返回第一个假值,运用(短路原则)
会返回第一个假值||
: 返回第一个真值(短路原则)
var num = 10, bool = true, str = "abc";
console.log(num && bool && 0); //0
console.log(num && str); //"abc"
console.log(bool && str); //"abc"
console.log(0 && str); //0
console.log(false && num); //false
console.log(undefined && num); //undefined
console.log(str && false); //false
console.log(0 && ""); //0
console.log("" && 0); // ""
console.log(num || bool || 0); //10
console.log(num || str); //10
console.log(bool || str); //true
console.log(0 || str); //"abc"
console.log(false || num); //10
console.log(undefined || num); //10
console.log(str || false); //10
console.log(0 || ""); //"" 没真值,只能返回第二个
console.log("" || 0); //0
取反:!
真变假
,假变真
var num = 10, bool = true, str = "abc";
console.log(!true); //false
console.log(!0); //true
console.log(!str); //false
短路的代码不会执行
console.log(str && num++); //10 && 期望返回第一个假值,没有假值,就返回最后一个真值,两个都是真值,返回第二个num++
console.log(num); //11
console.log(false && ++num); //false
console.log(num); //11 被短路的代码不运行了,所以还是11
console.log(num++ || 0); //11 最后做自增运算 12
console.log(0 || ++num); //13
console.log(0 || str > num); //fales 返回 str>num 的结果NaN
console.log(num); //13