一、JS中数据类型
简单数据类型:Undefined、Null、Boolean、Number、String
复杂数据类型:Object
Undefined类型只有一个值:undefined,Null类型只有一个值:null
可以用 typeof 来返回某数据类型的字符串:
"undefined"——该值未定义
"boolean"——该值为布尔值
"string"——该值为字符串
"number"——该值为数值
"object"——该值为对象或null
"function"——该值为函数
console.log(typeof "123")//"string"
console.log(typeof 123)//"number"
console.log(typeof true)//"boolean"
console.log(typeof null)//"object"
console.log(typeof undefined)//"undefined"
console.log(typeof (typeof undefined))//"string"
二、各类型值与Boolean类型的转化
数据类型 | 转换为true | 转换为false |
---|---|---|
Boolean | true | false |
Number | 任何非零数字值(包含无穷大Infinity) | 0和NaN |
String | 任何非空字符串 | "" |
Undefined | 不存在 | undefined |
Object | 任何对象 | null |
想提醒大家一句的是0的判断结果为false,我在使用初期有时会因为判断条件里有0而没得到想要的结果,比如:
const isAllowd = 0;
if( isAllowd ){
console.log("true");
} else {
console.log("false");
}
//false
三、相等操作符
1、相等与不相等:== ,!=
这两个操作符在比较相等性前会先转换操作数的数据类型:
1、如果一个操作数是布尔值,在比较相等性之前先将其转换为数值——false转换为0,true转换为1;
if( true == 1){
console.log("true");
} else {
console.log("false");
}//true
if( true == 2){
console.log("true");
} else {
console.log("false");
}//false
2、如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;
if( "2" == 2){
console.log("true");
} else {
console.log("false");
}//true
3、如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按前面的规则进行比较;
valueOf():返回对象的字符串、数值或布尔值表示
== ,!=操作符在比较时要遵循下列规则:
1、null和undefined是相等的;
2、要比较相等性之前,不能将null和undefined转换成其他任何值;
3、如果一个操作数是NaN,则相等操作符返回false,而不相等操作符返回true,即使两个操作数都是NaN,相等操作数也返回false,因为按照规则,NaN不等于NaN;
4、如果两个操作数都是对象,则比较它们是不是同一个对象,如果两个操作数都指向同一个对象,则相等操作符返回true,否则返回false;
一些特殊情况:
表达式 | 值 |
---|---|
null == undefined | true |
“NaN” == NaN | false |
5 == NaN | false |
NaN == NaN | false |
NaN != NaN | true |
false == 0 | true |
true == 1 | true |
true == 2 | false |
undefined == 0 | false |
null == 0 | false |
“5” == 5 | true |
2、全等与不全等:=== , !==
全等全不等操作符比较比较严格,需要两个操作数类型和值都相等才行,开发时一般都用此操作符。