JavaScript基本数据类型

时间:2021-10-24 17:28:18

(看了一些视频后感觉,其实在对这个语言没有了解之前,看书还是要深刻一点)

六个类型:Undefined,Null,Boolean,Number,String,Object


对于Undefined类型,只有一个值undefined。


Null类型:undefined是由null派生的,所以null==undefined。可将保存对象的变量初始化为null。


Boolean则有true和false,同时其他类型的值都有对应的Boolean值:

JavaScript基本数据类型

Boolean()函数可将值转换为对应的Boolean值,if等语句会自动执行相应的转换,所以if("Hello,World")这样的语句是合法的。


Number类型有整数也有浮点数,格式IEEE754。

数值范围:Number.MIN_VALUE (值为5e-324,与Number.NEGATIVE_INFINITY里的值相同),Number.MAX_VALUE (值为1.7976931348623157e+308,与Number.POSITIVE_INFINITY里的值相同),使用Isfinite()函数可以判断一个数是否位于最大值和最小值之间。

需要注意的是,由于IEEE754对于浮点数值计算的通病,会导致误差,比如0.1+0.2的结果会是0.30000000000000004(见JavaScript高级程序设计第三版P28)。

NaN,即非数值,是一个特殊的值,用于表示一些本来要返回数值的操作数未返回数值的情况。比如,数值除以非数值,返回NaN,不会影响其他代码的执行。同时,任何涉及NaN的都会返回NaN,比如NaN/10返回NaN,而且NaN与任何值都不相等,NaN==NaN就会返回false,不过可以用isNaN()判断一个值是不是数值,除了可以转换为数值的值,其他值都会返回true,即不是数值,如NaN,"Hello,world",而"10","true"之类的就能转换为数值,所以返回false。//貌似isNaN()的参数甚至可以是对象,但是我还不太懂具体的。

三个把值转换为数值的方法,Number(),parseInt(),parseFloat()。第一个适用于任何类型的值,后两个只能操作字符串,转换时遇到无效的字符即停止。

Number():

强制类型转换,忽略前导0,即不会将"011"当成八进制,而是当成11,其他基本和parseInt()和parseFloat()相同,转换字符串时通常用parseInt()和parseFloat()。

parseInt():

转换为10进制整数:

parseInt("1234blue");   //returns   1234
parseInt("0xA");   //returns   10
parseInt("22.5");   //returns   22

parseInt("blue");   //returns   NaN

按进制将给定字符串转换为10进制整数:

parseInt("AF",   16);   //returns   175
parseInt("10",   2);   //returns   2
parseInt("10",   8);   //returns   8

parseInt("10",   10);   //returns   10

对于ES 3,parseInt("010")返回8,对于ES 5则返回10,忽略前导0。

parseFloat():

parseFloat("1234blue");   //returns   1234.0
parseFloat("0xA");   //returns   NaN
parseFloat("22.5");   //returns   22.5
parseFloat("22.34.5");   //returns   22.34
parseFloat("0908");   //returns   908

parseFloat("blue");   //returns   NaN


String类型,JavaScript中的字符串不可变,因此操作时会先销毁原来的,如

var a = "java";

a += "script";

则第二行会先创建一个能容纳十个字符的空间,然后把里面填充好"javascript",最后一步销毁原来的字符串"java"和"script"。

转换其他值为String,可用toString()和String()。如var num = 10; num.toString(); 当toString操作的是数值的时候,还可以加上参数,表示转换为该进制下的字符串。


Object类型

创建:var a = new Object();

Object中自带的属性和方法:

constructor:保存着用于创建当前对象的函数。

hasOwnProperty(propertyname):检查指定属性是否在对象中存在。

isPrototypeOf(object):检查传入的对象是否是当前对象的原型。

propertyIsEnumerable(propertyname):检查给定的属性是否能通过for-in语句枚举。

toLocaleString():返回对象的字符串表示,与执行环境的地区相对应。

toString():返回对象的字符串表示。

valueOf():返回对象的字符串,数值或布尔值表示。通常与toString()的返回值相同。

//宿主对象,如BOM和DOM中的对象,可能会也可能不会继承Object。