JavaScript数据类型

来源:互联网 发布:哪个软件听歌好 编辑:程序博客网 时间:2024/06/05 04:19

一、数据类型

1、原始类型

5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。
对变量或值调用 typeof 运算符将返回下列值之一:

undefined - 如果变量是 Undefined 类型的boolean - 如果变量是 Boolean 类型的number - 如果变量是 Number 类型的string - 如果变量是 String 类型的object - 如果变量是一种引用类型或 Null 类型的

注释:您也许会问,为什么 typeof 运算符对于 null 值会返回 “Object”。这实际上是 JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了。现在,null 被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值。

1.1、Undefined 类型
Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。

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

提示:值 undefined 并不同于未定义的值。但是,typeof 运算符并不真正区分这两种值。考虑下面的代码:

var oTemp;alert(typeof oTemp);  //输出 "undefined"alert(typeof oTemp2);  //输出 "undefined"

前面的代码对两个变量输出的都是 “undefined”,即使只有变量 oTemp2 从未被声明过。如果对 oTemp2 使用除 typeof 之外的其他运算符的话,会引起错误,因为其他运算符只能用于已声明的变量上。

var oTemp;alert(oTemp2 == undefined);

当函数无明确返回值时,返回的也是值 “undefined”,如下所示:

function testFunc() {}alert(testFunc() == undefined);  //输出 "true"

1.2、Null类型
另一种只有一个值的类型是 Null,它只有一个专用值 null,即它的字面量。值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。

alert(null == undefined);  //输出 "true"

1.3、Boolean类型
boolean类型有两个值:true和false。
false不等于0,但是0可以在必要时被转换成false,所以Boolean语句中使用两者都是安全的。

1.4、Number类型
就可以表示32位的整数,也可以表示64位的浮点数。
对于浮点字面量的有趣之处在于,用它进行计算前,真正存储的是字符串。

特殊Number值:
Number.MAX_VALUENumber.MIN_VALUE是两个特殊的number值,定义了Number 值集合的边界,所有 ECMAScript 数都必须在这两个值之间,不过计算生成的数值结果可以不落在这两个值之间。
另一个特殊值是 NaN,表示非数(Not a Number)。NaN 是个奇怪的特殊值。一般说来,这种情况发生在类型(String、Boolean 等)转换失败时。例如,要把单词 blue 转换成数值就会失败,因为没有与之等价的数值。与无穷大一样,NaN 也不能用于算术计算。NaN 的另一个奇特之处在于,它与自身不相等,这意味着下面的代码将返回 false:

alert(NaN == NaN);  //输出 "false"

出于这个原因,不推荐使用 NaN 值本身。函数 isNaN() 会做得相当好:

alert(isNaN("blue"));  //输出 "true"alert(isNaN("666"));  //输出 "false"

1.5、string类型
String 类型的独特之处在于,它是唯一没有固定大小的原始类型。可以用字符串存储 0 或更多的 Unicode 字符,有 16 位整数表示。字符串字面量是由双引号(”)或单引号(’)声明的。



二、引用类型

引用类型通常叫做类(class)。
注意:从传统意义上来说,ECMAScript 并不真正具有类。事实上,除了说明不存在类,在 ECMA-262 中根本没有出现“类”这个词。ECMAScript 定义了“对象定义”,逻辑上等价于其他程序设计语言中的类。

对象是由 new 运算符加上要实例化的对象的名字创建的。如果没有参数,如以下代码所示,括号可以省略:

var o = new Object();  //正确var o = new Object;   //正确

注意:尽管括号不是必需的,但是为了避免混乱,最好使用括号。

0 0
原创粉丝点击