通过上图,我们可以知道,
number
string
boolean
null
undefined
五个属于基本数据类型
object
属于复杂数据类型。
Null类型
只有一个值的数据类型即null,null值表示一个空指针对象,因此typeof操作符检测null值时返回“object”。
Undefined类型
Undefined类型只有一个值即undefined。对未初始化的变量执行typeof操作符会返回undefined。因此显示的初始化变量依然是明智的选择,但不应该初始化为undefined。
无论在什么情况下都没有必要把一个变量的值初始化为undefined,但对于意在保存对象的变量则应明确的初始化为null值。这样做不仅体现null作为空对象指针的惯例,而且也有助于进一步区分null和undefined。
Boolean类型
Boolean类型有两个字面值:true和false。注意:true不一定等于1,false不一定等于0。
Number类型
Number类型包括整数和浮点数。
最小数值保存在Number.MIN_VALUE中,最大值保存在Number.MAX_VALUE中。如果某次计算的结果超出了javascript的数值范围则这个数值将被自动转换成特殊的Infinity值(负数则转换为-Infinity(负无穷),整数则转换为Infinity(正无穷))。
正或负的Infinity值无法参与下一次的计算。
使用isFinite()函数可以判断数值是否在最小值与最大值之间。
这里有一个特殊的标识符:NaN(Not a Number)
,任何涉及NaN的操作都会返回NaN,NaN与任何值都不相等。
javascript定义了isNaN(),这个函数会尝试将这个参数转换为数值然后再判断是否不是数值,注意判断结果,不是数值返回true,是数值返回false。
String类型
数值、布尔值、对象、字符串值都有toString()方法,但null和undefined值没有。
在不知道要转换的值是不是null或undefined的情况下,可以使用转型函数String(),这个函数能将任何类型的值转换为字符串。
类型转换
类型转换为String类型
转换成String类型的方式有两种:
- 调用toString()方法
- 调用String()函数
//boolean类型转string类型
//1.使用toString()方法
var fBool = false;
var tBool = true;
console.log(fBool.toString()); //"false"
console.log(tBool.toString()); //"true"
//2.使用String()函数
console.log(String(fBool)); //"false"
console.log(String(tBool)); //"true"
//number类型转String类型
var intNum = 123;
var floatNum = 123.45;
//1.使用toString()方法
console.log(intNum.toString()); //"123"
console.log(floatNum.toString()); //"123.45"
//2.使用String()函数
console.log(String(intNum)); //"123"
console.log(String(floatNum)); //"123.45"
//null类型转String类型
var nullObj = null;
//1.使用toString()方法
//console.log(nullObj.toString()); //这里会报错:Uncaught TypeError: Cannot read property 'toString' of null
//2.使用String()函数
console.log(String(nullObj)); //"null"
//undefined类型转String类型
var undefinedVal = undefined;
//1.使用toString()方法
//console.log(undefinedVal.toString()); //这里会报错: Uncaught TypeError: Cannot read property 'toString' of undefined
//2.使用String()函数
console.log(String(undefinedVal)); //"undefined"
总结:
null和undefined不能使用toString()方法,但是可以使用String()函数;
类型转换为Number类型
//boolean类型转number类型
var tBool = true;
var fBool = false;
//1.通过Number()函数
console.log(Number(tBool)); //1
console.log(Number(fBool)); //0
//2.通过parseInt()函数
console.log(parseInt(tBool)); //NaN
console.log(parseInt(fBool)); //NaN
//string类型转number类型
var str1 = "123";
var str2 = "123.45";
var str3 = "10px";
//1.通过Number()函数
console.log(Number(str1)); //123
console.log(Number(str2)); //123.45
console.log(Number(str3)); //NaN
//2.通过parseInt()函数
console.log(parseInt(str1)); //123
console.log(parseInt(str2)); //123
console.log(parseInt(str3)); //10
//3.通过parseFloat()函数
console.log(parseFloat(str1)); //123
console.log(parseFloat(str2)); //123.45
console.log(parseFloat(str3)); //10
//undefined类型转number类型
var undefinedVal = undefined;
//1.通过Number()函数
console.log(Number(undefinedVal)); //NaN
//2.通过parseInt()函数
console.log(parseInt(undefinedVal)); //NaN
//null类型转number类型
var nullObj = null;
//1.通过Number()函数
console.log(Number(nullObj)); //0
//2.通过parseInt()函数
console.log(parseInt(nullObj)); //NaN
总结:
可以通过三种方式转成数值类型,Number(),parseInt(),parseFloat();
boolean类型只能通过Number()进行转换;
string类型,使用Number()的时候,如果字符串中包含非数字的字符,那么就转换不成功,返回NaN;
注意:空字符串返回的都是0
使用parseInt()的时候,遇到非数字的字符之后就停止转换为数字。所以"10px" 转成 10
,另外如果第一个字符串就是非数字的字符,那么返回的是NaN,如:“abc” 返回 NaN
;
使用parseFloat()的时候,当同时存在多个小数点的时候,以第一个小数点为主;null类型,使用Number()的时候,返回0,使用parseInt()的时候,返回NaN;
undefined类型,使用Number()的时候,返回NaN,使用parseInt()的时候,返回NaN;
类型转换为Boolean类型
//number类型转boolean类型
var number1 = 123;
var number2 = -123;
var number3 = 0;
console.log(Boolean(number1)); //true
console.log(Boolean(number2)); //true
console.log(Boolean(number3)); //false
//string类型转boolean类型
var str1 = "";
var str2 = " ";
var str3 = "name";
console.log(Boolean(str1)); //false
console.log(Boolean(str2)); //true
console.log(Boolean(str3)); //true
//null类型转boolean类型
var nullObj = null;
console.log(Boolean(nullObj)); //false
//undefined类型转boolean类型
var undefinedVal = undefined;
console.log(Boolean(undefinedVal)); //false
总结:
- 空字符串返回
false
,字符串中都是空返回true
;