在Javascript数据类型分为两类:基本数据类型、引用数据类型。
基本数据类型包括
1.数值类型 Number
2.布尔类型 Boolean
3.字符类型 String
4.未定义 Undefined
5.空类型 Null引用数据类型包括
1.数组 Array
2.对象 Object
3.函数 Function
typeof( )方法用来返回当前变量的类型,在文中有些地方会用到这个方法。
本章只简单介绍下js的基本数据类型,引用数据类型会在后面文章单独介绍。
1.Number类型
js中的数字只有一个类型就是Number类型,无论是整数还是浮点数都是属于Number类型的。函数Number( )可以把任意类型的变量转换为Number类型。
- 整数
Number表示整数可以是十进制、八进制、十六进制。
var intNum=55;//十进制
var octalNum=070;//八进制数,第一位必须是0,解析为56
var octalNum=079;//无效的8进制数,9超过了8进制数的范围,解析为79
var hexNum=0xA;//十六进制数,前两位必须是0x,解析为10
- 浮点数
1、浮点数中必须包含一个小数点,且小数点后必须有一位数字。
2、对极大极小的浮点数采用科学记数法表示。
var floatNum=3.14;//浮点数
var floatNum=3.2e7;//3.2×10(7次幂)
var floatNum=3.2e-7;//3.2×10(-7次幂)
- NaN
1、NaN(Not a Number)是js中一个非常特殊的值,表示非数值的一个数值类型的变量。比如当把一个不含有任何数值的字符变量强制转化为数值类型时,该变量的值就会等于NaN。
2、NaN有两个非常特殊的特点:任何涉及NaN的操作都会返回NaN;NaN值与任何值都不相等,包括本身。
3、isNaN()函数,用来判断一个变量是不是不是一个数值类型,可以用来判断一个变量强制转换为数值类型时是不是为一个数。例如:
var stringNum="123";
var stringStr="abc";
isNaN(stringNum);//返回false
isNaN(stringStr);//返回true
2.String类型
String类型应该是js中最容易理解的数据类型了吧,不过String类型的方法有很多,后续会说到,任何东西都能放到String类型中,不过需要加引号,不论是单引号还是双引号,都必须是成对的出现
3.Boolean类型
Boolean只有两个类型的值:true、false。
函数Boolean( )可以把任意类型的变量转换为Boolean类型。
转换规则:
数据类型 转化为true 转化为false Number 任何不为0的数 0 String 任何非空字符串 “”空字符串 Undefined 只会被转换成false Null 只会被转换成false
这些规则对理解流程控制语句有一定帮助,如if( )语句会把其中的变量自动转换为Boolean类型。
4.Null类型
1、null类型的默认值是null,表示空数据类型。
2、js中有一个常见的错误,就是Null用typeof( null )方法返回的类型为Object类型。
typeof null==="object";
但是在《JavaScript高级程序设计(第2版)》中,却不认为这是一个错误:
“从逻辑角度来看,null值表示一个空对象指针,而这正是使用typeof操作返回‘object‘的原因。”
在developer.mozilla中对null返回object有如下的解释:
“在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是0。由于 null 代表的是空指针(大多数平台下值为0x00),因此,null的类型标签也成为了0,typeof null就错误的返回了’object’.”
这个现象本来会在ECMAScript 6中被修复的, 正确的返回值将成为 typeof null === ‘null’。但是官方出于兼容性的考虑,目前该提议已被否决。
5.Undefined类型
undefined类型被认为是派生自null的,不严格的说二者都是指没有明确赋值的类型,但是细分之后,undefined类型,被用来形容未经初始化的变量,null类型被用来形容空对象指针。
如何区分undefined和null:
当一个变量声明后,未初始化,则该值为undefined,如果这个值是为了保存对象,则修改其默认初始化的值,改为null。 所以当检测其类型时,会显示类型为object。所以,如果定义的变量准备在将来用于保存对象(即复杂的数据类型object),那么就该将该变量初始化为null。
var a;
typeof a === 'undefined'; // 一个未定义的变量,或者一个定义了却未赋初值的变量.
关于js的基本数据类型就介绍到这里,下篇文章将讨论下js基本数据类型的转换和一些常用的方法。