JavaScript中数据类型详解

来源:互联网 发布:安卓 gba 模拟器 知乎 编辑:程序博客网 时间:2024/04/27 16:54

JavaScript中分为简单数据类型(基本数据类型)和复杂数据类型。

简单数据类型:Undefined 、Null 、Boolean 、Number 、String 。
复杂数据类型 :Object 。

简单数据类型

Undefined

Undefined类型只有一个值,即特殊的undefined,使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。例如:

var message;alert(message == undefined) //true

Null

Null 类型只有一个值,即null,null值表示一个空对象指针,因此typeof操作符检测null值会返回object,在保存对象的变量还没有真正保存对象时,就应该明确的让该变量保存null值。例如:

var message = null ;alert(typeof null); //object

实际上undefined是派生自null值的:

alert(null == undefined) //true

Boolean

该类型只有两个值true和false ,要注意的是true和false是区分大小写的。ECMAScript中所有类型的值都有与这两个Boolean值等价的值,将一个值转化为其对应的Boolean值,可以调用转型函数Boolean(),例如:

var message = "hello";var mesBoolean = Boolean(message);

Number

分为整数和浮点数 。
整数 :分为十进制、八进制(以0开头的数字)、十六进制(以0x开头的数字)。
浮点数:数值中必须包含一个小数点,并且小数点后面至少有一个数字。浮点数值的最高精度是17位,进行算数计算时其精度远远不如整数,例如0.1+0.2计算结果不是0.3,因此永远不要测试某个特定的浮点数值。
NaN:非数值,用来表示一个本来要返回数值的操作数未返回数值的情况。
NaN的特点:任何涉及NaN的操作都会返回NaN;NaN与任何值都不相等,包括NaN本身。ECMAScript定义了isNaN()函数,该函数接受一个参数帮我们确定这个参数是否“不是数值”。例如:

alert(isNaN(10));//falsealert(isNaN("red"));//true

数值转换:有3个函数可以把非数值转换为数值,number()、parseInt()、parseFloat()。其中number()可以用于任何数据类型,parseInt()和parseFloat()用于把字符串转换为数值。parseFloat()只解析十进制数值,而parseInt()还可以指定第二个参数,表示转换时使用的进制。例如:

var num = parseInt("0xAF",16) //175

String

用于表示字符串,字符串可以由双引号(“”)或单引号(‘’)表示。字符串的长度可以通过length属性取得。例如:

var message = "hello";alert(message.length);//5

将值转换为字符串有两种方式:
a、数值、布尔值、对象、字符串值都有toString()方法,再调用数值的toString()方法时。该方法还可以传递一个参数:输出数值的基数,默认是十进制,例如:

var num = 10;alert(num.toString());//"10"alert(num.toString(2));//“1010”

b、由于toString()方法对null和undefined方法无效,在不确定要转换的值是不是null或undefined的情况下可以使用String()函数。例如:

var value1 = 10;alert(String(value1));//"10"

复杂数据类型

Object

对象其实就是一组数据和功能的集合,Object类型所具有的任何属性和方法也同样存在于更具体的对象中。 对象可以使用new操作符后跟要创建的对象类型的名称来创建,例如:

var o = new Object();

所有引用类型的值都是Object的实例

检测变量的数据类型

基本数据类型采用typeof,typeof操作符可能返回下列某个字符串:
typeof适合基本类型及function检测,遇到null失效

  • “undefined”——值未定义
  • “boolean”——值是布尔值
  • “string”——值是字符串
  • “number”——值是数值
  • “object”——值是对象或者null
  • “function”——值是函数
    例如:
var message = "hello";alert(typeof message);//"string"

复杂数据类型采用instanceof操作符,返回值是false或者true,例如:

alert(person instanceof Object);//变量person是Object吗?

instanceof适合自定义对象,也可以用来检测原生对象,在不同的iframe和window间检测时失效

原创粉丝点击