td901105td的专栏

javascript中共有五种基本数据类型:1.Undefined2.Null3.Boolean4.Number5.String还有一种复杂数据类型Object。

由于javascript是松散类型的,因此需要一种手段来检测值的数据类型,typeof操作符进行类型检测。

(typeof 可以直接操作变量和字面值,如typeof 95;//值是number)

undefined–如果这个值没有定义(变量没有初始化或者直接没有声明)boolean–如果这个值是bool值string–如果这个值是字符串number–这个值是数值object–这个值是对象或null(null是空对象的引用)

function–如果这个值是函数

重点注意的几种情况:

typeof null ;//object,因为null一般为认为是对象的引用,在js中需要定义一个对象时可以将该对象初始化为null,那么可以根据变量的值是否为null判断该变量是否保存了对象的引用!

typeof var;//undefined(var是没有初始化或者声明的变量)。一般情况下需要初始化变量,这样在出现undefined值时就知道该变量还未声明!根据输出值中的object和function,typeof可以用来区分一般对象和函数。Undefined类型:Undefined类型只能取一个值undefined,在声明变量未对其进行初始化时变量的值是undefined。var message;alert(message == undefined); //true但是包含undefined的值的变量和尚未定义的变量还是不一样的。var message;alert(message);//undefined

alert(varUndeclared);//产生错误,因为varUndeclared没有定义,变量查找的时候找不到变量,出错。对未声明的变量只能执行typeof操作,返回undefinded。

所以一般情况下对变量进行初始化,这样出现undefined时候就知道该变量没有定义。

Null类型:Null类型只有一个值null,根据前面的介绍null用来表示一个空对象的引用,所以如果声明的一个变量用来保存对象,那么可以将该变量初始化为null值,同时可以判断一个变量是否已经有对象的引用了。if(objVar !=null){ //进行对象操作

}

Boolean类型:Boolean类型只有两个值true和false,注意true和false是区分大小写的。

在js中将其他的值转换成Boolean值,直接使用Boolean转型函数。

var message = "hello world";

var messageAsBoolean = Boolean (message);

在js中,特别是在if条件表达式中会出现类型转换

Boolean类型的false,String类型的“”(空串),Number类型的0和NaN(not a number),object类型的null,Undefined类型的undefined都会转换成false,其他转换成true。

Number类型

在js中数值都是用IEEE754格式来表示的。

整型:在js中,整型有十进制,八进制,十六进制三种形式,但是在参与计算时都转换成十进制进行计算。

浮点数:

IEEE754中,保存浮点数需要的内存空间是保存整型值的两倍,所以ECMAScript会在某些时刻将浮点数转换成整型值:

1.小数点后没有跟任何数字,如1.

2.浮点数本身就是一个整数,如10.0

对于那些极大或极小的数值,可以用e表示法。在默认情况下,ECMAScript会将那些小数点后面带有六个或者六个以上的浮点数转换成e表示法的数值。

浮点数的计算

浮点数的表示精度是17位小数,浮点数参与计算时的精度远不如整数,如0.1和0.2的和不是0.3,而是

0.30000000000000004,,这个细小的误差会导致测试某些条件时出现错误。

if(a+b==0.3) //不要做这样的测试

{

//代码

}

数值范围

ECMAScript能够表示的范围是从Number.MIN_VALUE~Number.MAX_VALUE。如果计算的值的范围超过这个范围那么就会返回正的或者负的Infinity。可以使用Isfinite函数来判断数值是否在可表示的范围内,Infinity无法参与运算。

NaN

NaN(not a number)是一个特殊的数值,当运算无法返回正确的数值时就会返回NaN。如:

任何数除以0之后会返回NaN,并且不会抛出错误,不会影响其他代码的执行。

NaN的特点:

1.任何涉及NaN的操作都会返回NaN,可能导致多步计算的问题。

2.NaN与任何值都不相等,包括它自身。如:alert(NaN==NaN);// false

isNaN函数用来判断参数是否"不是数值"。

数值转换

Number函数,parseInt函数,parseFloat函数。

Number的转换规则:

1.true和false转换成1和0,

2.数字就是简单的传入和返回,

3.null值转换成0

4.undefined值转换成NaN,

5.字符串

只包含数字的转换成对应数值,

空串转换成0,

其他的转换成NaN

6.对象首先调用valueOf方法,然后按照前面的转换规则,如果是NaN,然后调用toString方法,接着按照前面的转换规则。

parseInt函数规则

parseInt函数会忽略字符串前面的空格,知道找到第一个非空格,接着进行处理:

1.非数字字符串转换成NaN(空串也转换成NaN) parseInt("");//产生NaN

2. 截取字符串中的数字字符串转换成数值。

parseInt(str,基数),parseInt的第二个参数可以选定解析时的基数,默认是十进制的,所以第二个参数默认是10。

parseFloat函数规则

parseFloat的规则和parseInt类似,但是它会始终忽略前导的0,并且它的解析基数始终是10,所以没有第二个参数。

parseFloat会将所有的十六进制数解析为0.

String类型

String类型由0个或者多个16位的Unicode字符组成的字符序列。字符串的长度是由length属性获得,如:

var str="This is the letter sigma: \u03a3.";

alert(str.length);// 28,将\u03a3当做一个字符。

类型转换

将其他类型转换成字符串有两种方式:

1.toString函数,几乎所有的值(除了null和undefined之外)都有该函数,toString函数还可以接受输出的基数格式。默认是十进制的基数。

2.String函数

String函数的规则:

1.如果值存在toString方法,调用该函数返回对应的值,

2.值是null,返回“null”,

3.值是undefined,返回“undefined”。

3.可以直接把该值和一个字符串(“”)加在一起

Object类型

在javascript中Object是所有对象的基础,也就是说Object类型所具有的任何属性和方法也同样存在于所有的对象中。(不一定适用于宿主对象BOM和DOM)。

Object类型的属性和方法:

constructor():用于创建当前对象的函数。

hasOwnProperty(propertyName):用于检查给定的属性是否在当前实例中(不是在实例原型中)。

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

propertyIsEnumerable(propertyName):用于检查传入的对象属性是否可以使用for-in语句枚举。

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

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

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

福报不够的人,就会常常听到是非;

td901105td的专栏

相关文章:

你感兴趣的文章:

标签云: