JavaScript中的数据类型

来源:互联网 发布:包装效果图制作软件 编辑:程序博客网 时间:2024/06/06 02:03

分类

5中基本数据类型:Undefined、Null、Boolean、Number、String。
1种引用数据类型:Object

js中的Object不同与java中的类,其本质是一组无序的键值对。

具体类型判定

使用typeof操作符,根据返回值判断数据类型:
‘undefined’ —- Undefined类型
‘boolean’ —- Boolean类型
‘string’ —- String类型
‘number’ —- Number类型
‘object’ —- Null或者 Object类型

注意typeof对null值返回的也是’object’,因为null被认为是一个空对象的引用。

还有typeof对是函数的值返回值为’function’,尽管函数属于Object类型,因为在js中函数被认为是对象。之所以对函数typeof返回的是’function’可能是为了区分函数和其他对象。

上述就是使用typeof 操作符时所有可能的返回值 : ‘undefined’、’string’、’number’、’object’、’boolean’、’function’

Undefined类型

该类型只有一个值: undefined
当声明的变量没有初始化时会默认取得undefined值。

var foo;alert(typeof foo === 'undefined'); //true

另外对于未声明的变量使用typeof操作符也会返回’undefined’

//var fooalert(typeof foo); //'undefined'

这就是显式初始化变量的好处,当typeof返回 ‘undefined’的时候我们就可以知道是变量没有声明而不是没有初始化。

Null类型

Null类型也只有一个值:null
null表示一个空对象的引用

var foo = null;alert(typeof foo); //'object'

当我们声明一个用于保存对象的变量时,我们最好初始化其值为null。
这样我们可以通过判断其值是否为null来判断其是否已经保存了对象的引用。

Boolean类型

该类型有两个值: true和false
可以通过Boolean()函数将其他类型的值转换成Boolean类型,在if语句条件中则会自动完成其他值到Boolean类型的转换。

var foo = 'hello';var fooBoolean = Boolean(foo);alert(fooBoolean);  // true
var foo = 'hello';if (foo) {    alert('value is true');}

至于转换规则可想而知:空字符串”、0和NaN、空对象null、undefined会转换成false值。

Number类型

使用字面量来定义Number类型

var foo = 10;alert(typeof foo); //'number'

同样可以使用八进制和十六进制

var foo = 012; //八进制的10var bar = 0xA; //十六进制的10

而在计算时都将被转换成十进制

浮点数值
包含小数点且小数点后有数字的数会被当做浮点数值。
浮点数值内存空间是整数值的两倍
所以如 1.0 这样本身表示的是整数的浮点数会被转换成整数 1

另外注意0.1 + 0.2 不是0.3。而是0.30000000000000004
所以永远不要测试浮点数的值

js中数值是有范围的,不可能保存无限大的值。
Number.MIN_VALUE表示能保存的最小值
Number.MAX_VALUE表示能保存的最大值
使用isFinite()函数来判断某个数值是否属于这个范围

NaN
NaN是一个Number类型的特殊值,主要有两个特点
1.任何涉及NaN的操作都会返回NaN。
2.NaN与任何值都不相等,包括NaN本身。

alert(NaN === Nan); //false

可以使用isNaN()函数来判断一个值是否是NaN

isNaN(10); //falseisNaN('blue'); //true

数值转换
使用Number()函数能将其他类型的值转换成数值类型。具体转换规则可以查到。几个需要注意的如下

var num1 = Number('');`//0var num2 = Number(null); //0var num3 = Number(undefined); //NaNvar num4 = Number('010'); //10

另外对一个对象使用Number()函数会调用对象的valueOf()方法,如果返回的是NaN,则会再调用对象的toString()方法并将返回的String转换成数字。

我们在实际中用的更多的是parseInt()函数来进行字符串到整数的转换。

var num1 = parseInt('1234blue'); //1234var num2 = parseInt(''); //NaNvar num3 = parseInt('0xA'); //10var num4 = parseInt(22.5);  //22

同样还有parseFloat()函数用来转换成浮点型。

String类型

var foo = 'hello';alert(foo.length);  //5

字符串有length属性,表示字符串的长度。

JavaScript中字符串是不能变的,一旦创建,其值就不会改变

var lang = 'Java';lang = lang + 'Script';

上述操作过程:先创建能容纳10个字符的新字符串,然后在其中填充 ‘Java’和 ‘Script’,最后销毁原先的 ‘Java’和 ‘Script’。

转换成字符串有两种方式:toString()方法和String()方法
常用的是toString()方法,几乎每个值都有这个方法。但是null和undefined没有这个方法。所以如果不知道转换的值是不是null或者undefined,可以使用String()方法。
同样我们可以通过将某个值加空字符串”来将其转换成字符串

Object类型

JavaScript中的对象其实就是一组数据和功能的集合。可以像java一样通过new操作符来创建对象。

var o = new Object();

Object对象的每个实例都有下列属性和方法:
constructor:保存创建当前对象的函数。
hasOwnProperty(propertyName):用于检查属性是否存在当前实例中(而不是实例的原型中)
isPrototypeOf(object):检查该实例是否是传入对象的原型
propertyIsEnumerable(propertyName):检查给定的属性能否用for-in来枚举。
toLocalString():返回对象的字符串表示,与地区有关
toString():返回对象的字符串表示
valueOf():返回对象的字符串、数值或布尔值的表示