JavaScript中的数据类型知识总结(一定有你不知道的秘密~)

JavaScript中的数据类型知识总结

一、JavaScript中(严格说是ECMAScript中)有5种简单的数据类型(undefined, null, boolean, number, string)和1种复杂数据类型(object)。


二、JavaScript是变量松散类型语言(即每个变量只是一个占位符,其类型并不固定,可以随时变化),所以需要一种手段来检测给定变量的数据类型,typeof就是检测数据类型的操作符。对一个值使用typeof操作符可能返回的值包括(undefined,  boolean, number, string, object, function)。其中值为null或object类型时,返回值均为object(因为特殊值null被认为是一个空的对象引用)。值为函数时,返回值为function(从技术角度讲,function在JavaScript中属于对象的一种,但是函数确实有一些特殊的属性,因此把function和其他object做一下区分确实是有必要的)。


三、6数据类型注意点:

    1.undefined:

        只用var关键字声明,但未初始化的变量,其值(或者说是数据类型)是undefined。

var message;
alert(typeof message);  //undefined

        或者用下面这种方式声明并显示初始化变量,其值(或者说是数据类型)也是undefined。(和上面结果完全一样,这是一种闲得蛋疼的做法。)

var message1 = undefined;
alert(typeof message1); //undefined


        另外还有一种变量的typeof结果也为undefined,就是未被声明的变量

alert(typeof message2);  //未用var声明过的变量message2

        注意:未被声明和未被初始化这两种变量从技术角度讲是有本质区别的(未被声明的变量基本上不能进行任何操作),之所以它们ypeof结果均为undefined,是因为这两种变量的共同点是均不可能执行真正意义上的操作。


    2.null:实际上undefined值是派生自null值的,因此ECMA262规定他们的相等性测试要返回true。

var message = null;  //显示赋值null
var message2 = undefined;  //显示赋值undefined
alert(typeof message);  //object
alert(typeof message2); //undefined
alert(message == message2); //true 神奇吧!!??

    3.boolean:在程序中有时需要将一个变量转换为boolean类型(多数情况是在if语句进行条件判断时),这就需要调用转型函数Boolean()(if判断语句中自动调用)。其中转换结果为false的值有(false, "", 0, NaN, null, undefined),其他值均将转换为true。


    4.number:

        JavaScript本身是区分大小写的语言,但十六进制数值中,字母(A~F)可以大写也可以小写。

        在JavaScript保存数值的方式中,0是可以保存为+0和-0两种形式的。但通常我们不用在意他们,在JavaScript的解析引擎中也刻意向我们隐藏了两种0的存在。

        永远不要测试某个特定的浮点数值。JavaScript的number类型采用IEEE754来表示整数和浮点数值,基于IEEE754的浮点计算有一个通病,就是会产生舍入误差。比如0.1加0.2的结果不是0.3,而是0.30000000000000004。这个小小的舍入误差会导致无法测试特定的浮点数值。如下例子所示:

var floatNum1 = 0.05;
var floatNum2 = 0.25;
if (floatNum1 + floatNum2 == 0.3){
	alert("0.05 + 0.25 = 0.3")    //弹出警告框
}
else {
	alert("0.05 + 0.25 <> 0.3")
}

var floatNum3 = 0.1;
var floatNum4 = 0.2;
if (floatNum3 + floatNum4 == 0.3){
	alert("0.1 + 0.2 = 0.3")
}
else {
	alert("0.1 + 0.2 <> 0.3")    //弹出警告框
}

        关于JavaScript中number型的数值范围:Number.MIN_VALUE(最小值,通常是5e-324,不同浏览器可能结果不同),Number.MAX_VALUE(最大值,通常≈1.79e+308,不同浏览器可能结果不同),Number.NEGATIVE_INFINITY(负无穷大,值为-Infinity),Number.POSITIVE_INFINITY(正无穷大,值为Infinity)。如果某次的计算结果超过Number.MIN_VALUE~Number.MAX_VALUE范围,计算结果就会被转换成-Infinity或Infinity。

        NaN(Not a Number):是一个特殊的数值,用于一个本来要返回数值的操作数未返回数值的情况,比如任何数字除以0会返回NaN,而不会抛出错误。两个特点:1.任何涉及NaN的操作(如NaN/10),都会返回NaN。2.NaN和任何值都不相等,包括NaN本身。另外JavaScript定义了isNaN()函数用来帮我们确定其参数是否不是数值。

        三个数值转换函数:parseInt(最常用,将字符串转换为整数,需要注意的是最好为该方法传入第二个参数,即基数,通常为10,以表示按十进制转换)。parseFloat(与parseInt类似,将字符串转换为浮点数,也可能返回整数)。Number(可以用于把任何类型转换为数值,但转换规则相对复杂,不太常用)。


    5.string:

        JavaScript中单引号双引号都可以表示字符串。

        任何字符串的长度,都可以通过访问其属性.length来取得,但如果字符串中包含双字节字符则可能不会精确地返回字符串中的字符数。(转义字符会被认为是1个字符,如:\u03a3在计算length的时候会被当作一个字符计算)

        除了null和undefined类型外,其他数据类型均有.toString()方法,用于将其值转换为字符串形式的一个副本。另外如果不知道要转换的值是否为null和undefined的情况下,可以用转型函数String()。(另外还可以采用+操作符把空字符串""与要转换的值相加来将其转换为字符串。


    6.object:

       和java类似,在JavaScript中Object类型是所有其他实例的基础,他所具有的属性和方法也同样存在于更具体的实例中。但从技术角度说,像BOM、DOM中的宿主对象,其实现和定义由宿主(即浏览器)提供,因此其可能会也可能不会继承Object。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值