JS中的数据类型

来源:互联网 发布:笔趣阁软件最新版 编辑:程序博客网 时间:2024/05/22 05:25

数据类型

JavaScript中包含5种简单数据类型:Boolean、Number、String、Undefined、Null。还有一种复杂数据类型Object。Object是一种对象类型,包括:Object、Function、String、Number、Boolean、Array、Regexp、Date、 Globel、Math、Error,以及宿主环境提供的Object类型。

typeof运算符

typeof运算符用来检测表达式的类型,其结果为一个表示该表达式数据类型的字符串。

typeof运算符返回的结果表达式值返回结果Undefined"undefined"Null"object"Boolean"boolean"Number"number"String"string"Object(没有实现[[Call]]属性的内建对象)"object"Object(实现了[[Call]]属性的内建对象)"function"Object(host对象)由实现决定    

Undefined数据类型

Undefined数据类型只有一个值,那就是undefined(注意区分大小写)。当定义了一个变量而未对该变量赋值时,那么该变量的值就是undefined。

var a;alert(a);  //"undefined"

Null数据类型

Null数据类型仅有一个值,就是null(注意区分大小写)。从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null时会返回"object"的原因。

var a = null;alert(typeof a);  //"object"

但是实际上并非因为null是"object",而是历史遗留问题。JS创始人也曾讨论并尝试修复typeof null === "null", 但在V8引擎中实现后导致大量问题,因此提案被拒绝。详情参见:http://wiki.ecmascript.org/doku.php?id=harmony:typeof_null

null值可以用在很多情况下,例如:

  • 表明变量还没接收到值。
  • 变量不在包含值。
  • 作为函数的返回值,表明函数没有可以返回的值。
  • 作为函数的一个参数,表明省略了一个参数。

此外如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检测null值就可以知道相应的变量是否已经保存了一个对象的引用了。

if (a != null){//对a进行的操作}

实际上,undefined值是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true。

alert(null==undefined);

Boolean数据类型

Boolean为逻辑数据类型,仅有两个值:true和false。在JS中所有的数据类型都可以转化成这两个Boolean值。要将一个值转化成Boolean值,可以调用Boolean()。

var a = "";alert(Boolean(a));  //false

数据类型与Boolean值对应表数据类型转换成true值转换成false值BooleantruefalseString任何非空字符串""Number任何非零数字值0和NaNNull nullObject任何对象 Undefined undefined

Number数据类型

数字是双精度浮点值,浮点值即是带有小数点的数字。有两个常数需要注意。

Infinity

Infinity表示正无穷大,例如一个正数除以0就会返回正无穷大。

NaN

NaN表示非数字,这是一个具有IEEE-754标准值的预定义变量。NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括NaN本身。

alert(NaN/2);  //NaNalert(NaN==NaN);  //false

String数据类型

String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由单引号(')或双引号(")表示。

对于某些特殊的字符,需要使用字符串转义。详情请见:JS中的转义字符

要将一个值转换成字符串有两种方法:

(1)使用数值、布尔值、对象和字符串值的toString()方法。但null和undefined值没有这个方法。

(2)在不知道要转换的值是不是null或undefined的情况下,还可以使用转型函数String()。

这个函数能够将任何类型的值转换为字符串。String()函数遵循下列转换规则:

  • 如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果
  • 如果值是null,则返回"null"
  • 如果值是undefined,则返回"undefined"

Object数据类型

对象其实就是一组数据和功能的集合。

Object对象的属性和方法属性和方法解释constructor对一个JavaScript函数的引用,该函数是对象的构造函数。hasOwnProperty( )检查对象是否有局部定义的(非继承的)、具有特定名字的属性。isPrototypeOf( )检查对象是否是指定对象的原型。propertyIsEnumerable( )检查指定的属性是否存在,以及是否能用for/in循环枚举。toLocaleString( )返回对象地方化的字符串表示。该方法的默认实现只调用toString()方法,但子类可以覆盖它,提供本地化。toString( )返回对象的字符串表示。Object类提供的该方法的实现相当普通,并且没有提供更多有用的信息。Object的子类通过定义自己的toString()方法覆盖了这一方法(toString()方法能够生成更有用的结果)。valueOf( )返回对象的原始值(如果存在)。对于类型为Object的对象,该方法只返回对象自身。Object的子类(如Number和Boolean)覆盖了该方法,返回的是与对象相关的原始数值。
原创粉丝点击