JavaScript 数据类型
基本数据类型:undefined 、null 、String、Boolean、Number
引用数据类型:Object、Function、Array、Date等
undefined
1、使用一个变量,但是没有进行初始化
2、获取一个对象中不存在的属性时
3、函数没有返回值时,默认返回undefined
4、函数定义了多个形参,但是调用的时候,传入的实参数量少于形参,这样没有匹配到的形参值为undefined
null
null表示一个空指针对象 typeof 返回为object
1、定义变量的时候可以初始化为null
2、无法获取document 元素返回为null
3、通过正则表达式进行匹配,如果没有匹配成功,则返回null
undefined和null
相同点:
类型转化boolean类型时都为false
转换成对象时都抛出TypeError异常
undefined派生于null在非严格模式下相等
不同点:
null是关键字 undefined是全局变量
用typeof检测时 null为Object undefined为undefined
转化为字符串时null转化为“null” undefined转化为“undefined”
转化为数值是null转化为0,undefined转化为NaN不能参与计算
建议:
初始化变量时用null不用undefined
Boolean类型转换
当判断语句所判断中不是boolean类型时,javaScript进行自动转换(Boolean( ))。
String转化为boolean时:空字符串为false,其余都为true
数字类型转化为boolean时:0和NaN转化为false,其余都为true
Object转化为boolean时:当对象为null时为false,其余都为true
Function转化为boolean时:都为true;
null和undefined转化为boolean时:都为false
Number
进制
八进制:以0开头,后面的数字应为0~7,超过7变为以十进制
十六进制:以0x开头,后面为0~9||A~F 没在范围内会报错
Number转化:
boolean转化:true为1,false为0.
null转换:为0
undefined转换:为NaN
String转换:
<1> 当字符转包含数字或者浮点数,则会转化为10进制,第一位为0的话,会省略0(列“0123”转化为123,“1.23”转化为1.23)
<2>如果包含了有效的十六进制,会以10进制输出(例:“0x3f”转化为63)
<3>如果是空字符转化为0
<4>如果字符串包含了除上述格式以外的字符串,会转化为NaN
Number()
进行类型转换,将其他类型转换为Number类型,符合上述类型转换
parseInt(String,redix)
将String类型转化为整形,redix可不写默认为十进制,当字符串中出现不属于数字是将后面字符都忽略,当传入值为Number类型时,先将Number进行计算转化为十进制再转化为String类型,再进行转换为整形
parseFloat(String)
将String转化为整形,当字符串中出现不属于数字是将后面字符都忽略,只识别字符串中第一个点,当传入值为Number类型时,先将Number进行计算转化为十进制再转化为String类型,在进行转换为浮点型。
isNaN()与Number.isNaN()
isNaN( ) 传入值如果不是Number,会自动转化为Number类型,如果传入值或者传入值转化为Number类型的值为NaN 输出true,否则输出false。
Number.isNaN( ) ,传入值不自动进行数据类型转换,如果传入为NaN输出true,否则输出false。