您的位置:首页 > Web前端 > JavaScript

JavaScript中的原始类型——js基础(一)

2011-04-29 11:53 225 查看
准备阅读《JavaScript高级编程》一书,在此做一些笔记,一来方便自己查阅,二来给自己一点“压力”,三,如果可以的话,希望可以方便一下大众。

翻过JavaScript历史(有兴趣的朋友可以网上找找资料),直接进入正题……

———————————————————分割一下—————————————————————————————



在ECMAScript中(为什么是ECMAScript中,因为JavaScript包括了ECMAScript、DOM、BOM,而ECMAScript定义了JavaScript中的语法、关键字等等),变量可以存放两种类型的值,原始类型和引用类型,原始类型其实可以理解为Java、C#等语言的值类型
,值存放在栈(stack)上面。ECMAScript中包含五种原始类型,即Undefined、Null、Number、Boolean、String,注意:String类型在JavaScript中属于原始类型
,这点不同于Java、C#等语言。



在为变量赋值时,ECMAScript的解释程序必须判断该值是原始类型的。



在JavaScript中,把术语类型(type)定义为值的一个集合,每种原始类型定义了它包含的值的范围及其字面量表示形式。 ECMAScript提供了typeof 运算符来判断一个值是否在某种类型的范围内。可以用这种运算符判断一个值是否表示一种原始类型;如果它是原始类型,还可以判断表示哪种原始类型(注意:对Null值使用typeof运算符,返回的是object)。



typeof运算符

typeof运算符有一个参数,即要检查的变量或值。例如

var sTemp = "test string";

alert(typeof sTemp);//output "test string"

alert(typeof 20); //output "number"



对变量或值调用typeof运算符将返回下列值之一:

”undefined“,如果变量是Undefined型的。

”boolean“,如果变量是Boolean型的。

”number“,如果变量是Number型的。

”string“,如果变量是String型的。

”object“,如果变量是一种引用类型或Null类型的。

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



Undefined类型

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


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

var oTemp;

alert(typeof oTemp); //output "undefined"

alert(typeof oTemp2); //output "undefined"

但是,如果不用typeof运算符,就对oTemp2使用其他运算符,这将引起错误,因为那些运算符只能用于已定义的变量。例如,下面代码将引发错误:

alert(oTemp2 == undefined); //error

当函数无明确返回值时,返回的也是值undefined。



Null类型:

null类型也只有一个值,即null。undefined实际上是从null派生而来的,因此ECMAScript把他们定义为相等的。

alert(null == undefined); //output "true"

尽管两个值相等,但是他们的含义却不一样,undefined是声明了变量但为对其初始化时赋予该变量的值,null则用于表示尚未存在的对象。如果函数要返回的是对象,那么找不到该对象时,返回的通常是null。



Boolean类型

Boolean类型是ECMAScript中最常用的类型之一。它有两个值true和false(即两个Boolean字面量)。即使false不等于0,0也可以在必要时被转换成false,这样在Boolean语句中使用两者都是安全的。

其实alert(1 == true);返回的是true;alert(0 == false);返回的也是true。不知道为什么说上面说的“false不等于0”是什么意思。



Number类型

ECMA-262中定义的最特殊的类型是Number型。这种类型既可以表示32位的整数,还可以表示64位的浮点型。直接输入的(而不是从另外一个变量访问的)任何数字都被看作Number型的字面量。例如下面代码声明了存放整数值的变量,它的值由字面量55定义:

var iNum = 55;



整数也可以被表示为八进制(以8为底)或者十六进制(以16为底)的字面量。八进制字面量的首字母必须为0,其后的数字可以是任何八进制数字(0到7),如下面代码所示:

var iNum = 070; //等于8



要创建十六进制的字面量,首位数字必须为0,其后接字母x,然后是任意的十六进制数字(0到9和A到F)。这些字母可以是大写的,也可以是小写的。例如:

var iNum = 0x1f; //等于31

var iNum2 = 0xab; //等于171



注意:尽管所有整数都可以表示为八进制或者十六进制的字面量,但所有的数学运算符返回的都是十进制的结果。



要定义浮点值,必须包括小数点和小数点后的以为数字(例如,用1.0而不是1)。这被看作浮点数数字面量。例如:

var fNum = 5.0;



浮点字面量的有趣之处在于,用它进行计算前,真正存储的是字符串。???



(还有科学记数法等不常用的内容,由于不常用,大家可以查查资料。)





String类型:

String类型的独特之处在于,它是唯一没有固定大小的原始类型。可以用字符串存储0或更多的Unicode字符,由16位整数表示。由于JavaScript中没有字符类型(如Java、c#中的char类型),所以声明一个字符变量用双引号或者单引号都可以。



另外,String类型还包括几种字符字面量,Java、C和perl的开发者应该对此比较熟悉。下表列出了ECMAScript的字符字面量:

字面量 含义

/n 换行

/t 制表符

/b 空格

/r 回车

/f 换页符

// 反斜杠

/' 单引号

/" 双引号

/0nnn 八进制代码nnn(n是0到7中的一个八进制数字) 表示的字符

/xnn 十六进制代码nn(n是0到F中的一个十六进制数字) 表示的字符

/unnnn 十六进制代码nnnn(n是0到F中的一个十六进制数字)表示的Unicode字符





201105021245(完)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: