第4章JavaScript的数据类型和运算符_第1页
第4章JavaScript的数据类型和运算符_第2页
第4章JavaScript的数据类型和运算符_第3页
第4章JavaScript的数据类型和运算符_第4页
第4章JavaScript的数据类型和运算符_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章JavaScript的数据类型和运算符,JavaScript脚本语言同其他语言一样,有它自身的基本数据类型、表达式和算术运算符。要想编写出JavaScript程序,还需要继续深入学习JavaScript程序设计知识。JavaScript也有一套自己的语法规则和基本框架结构,这是掌握JavaScript语言的基础。,4.1语法规则,所有的编程语言都有自己的一套语法规则,用来详细说明如何用这种语言来编写程序。对不同的编程语言来说,许多规则是类似的。但是这些语言之间也存在着不少差异,也要注意区分它们之间的不同之处。为了确保程序正确运行并减少错误结果,必须遵守这些语言各自的语法规则。在编写Jav

2、aScript代码时,由于JavaScript不是一种独立运行的语言,所以必须既关注JavaScript的语法规则,又要熟悉HTML的语法规则。,4.1.1JavaScript严格区分大小写,JavaScript是严格区分大小写的。在程序中定义一个标识符computer(首字母小写)的同时还可以定义一个Computer(首字母大写),二者是完全不同的两个符号。在输入语言的关键字、变量、函数名以及所有的标识符时,都必须采取一致的字符大小写形式。一般来说,JavaScript中使用的大多数名称都采用小写形式。如保留字全部都为小写,但也有一些名称采用大小写组合方式,如onClick、onLoad、D

3、ate.getFullYear等。因此,在编写代码时,要特别注意大小写问题。另外还要注意,HTML标记并不区分大小写。在键入表格标记时,无论是键入、还是,或者任意使用大小写字母,对于浏览器来讲意义都是一样的,都代表表格标记。由于HTML标记和客户端JavaScript经常联系在一起,所以很容易混淆。例如许多JavaScript对象和属性都与它们所代表的HTML标签和属性同名。在HTML中,这些标签和属性可以以任意大小写的方式输入,但是在JavaScript中,它们必须按规定的格式书写。,4.1.2JavaScript程序的注释,为程序添加注释可以用来解释程序的某些部分的作用和功能,提高程序的可

4、读性。此外,还可以使用注释来暂时屏蔽某些程序语句,让浏览器暂时不要理会这些语句。等到需要的时候,只要简单的取消注释标记,这些程序语句就又可以发挥作用了。其实,注释是好脚本的主要组成部分,注释有利于提高脚本程序的可读性。为自己的程序加入适当的注释,其他人就可以借助它们来理解和维护脚本,从而有利于团队合作开发,提高开发效率。,4.1.3JavaScript程序代码的格式,在JavaScript程序中,每条功能执行语句的最后必须用分号(;)结束。一个单独的分号(;)也可以表示一条语句,这样的语句叫做空语句。为了整齐美观而采取的对齐,或者缩进文本的编排方式不是必须的。可以按自己的意愿任意编排,只要每个

5、词之间用空格、制表符、换行符或者大括号、小括号这样的分隔符隔开就行了。在JavaScript程序中,一行可以写一条语句,也可以写多条语句。一行中写多条语句时,语句之间使用英文分号(;)分隔。一行中只写一条语句时,可以省略语句结尾的分号,此时以回车换行符作为语句的结束。,4.1.4JavaScript常量,JavaScript的常量通常又称为字面常量。它是不能改变的数据,与基本的数据类型相对应,有以下几种常量。1整型常量2实型常量3布尔值4字符串型常量5null常量6undefined常量,4.1.5JavaScript的空白符和换行符,JavaScript会忽略程序中记号之间的空格、制表符和换

6、行符,除非它们是字符串常量的一部分。其中记号(token),就是指一个关键字、变量名、数字、函数名或者其他各种实体。具体来说,可以分为以下3种情况。(1)如果标识符、运算符之间有多于一个的空白字符,对于解释器来讲,几个空白字符相当于起到一个空白字符的分隔作用。(2)如果在一个记号中插入了空格、制表符或写到两行上,JavaScript就会将它分成两个记号。例如:area是一个变量名,而area则是两个独立的变量ar和ea。(3)如果字符串常量本身包含空格,如“cellphone”,JavaScript解释器在解释代码的过程中会保留这些空格。,4.1.6JavaScript标识符,标识符是指Jav

7、aScript中定义的符号,例如,变量名、函数名、数组名等。在JavaScript中,合法的标识符的命名规则和Java,以及其他许多语言的命名规则相同,即标识符可以由任意顺序的大小字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,不能是JavaScript中的保留字。,4.1.7JavaScript保留字,每种程序语言都有自己内嵌的保留字词汇,不能将它们用做变量名。JavaScript同其他语言一样也拥有自己的保留字。JavaScript保留字(ReservedWords)是指在JavaScript语言中有特定含义,成为JavaScript语法中一部分的那些字。它们只能在J

8、avaScript语言规定的场合中使用,而不能用作变量名、函数名等标识符。,4.2基本数据类型,程序设计语言所支持的数据类型是这种语言最为基本的部分。JavaScript能够处理多种类型的数据,这些数据类型可以分为两类:基本数据类型和引用数据类型。JavaScript的基本数据类型包括常用的数值型、字符串型和布尔型,以及两个特殊的数据类型:空值和未定义。另外,它还支持复合数据类型数组、函数、对象等。由于JavaScript采用弱类型的形式,因而数据在使用前不必先作声明,而是在使用或赋值时确定其数据类型。,4.2.1数值型,数值型(number)是最基本的数据类型,可以用于完成数学运算。Java

9、Script和其他程序设计语言的不同之处在于它并不区别整型数值和浮点型数值。在JavaScript中,所有数字都是由浮点型表示的。目前,JavaScript采用IEEE754标准定义的64位浮点数值格式来表示数据,所以JavaScript能表示的最大的值是1.7976931348623157*10308,最小值是5*10-324。如果一个数值直接出现在JavaScript程序中时,称为数值直接量(numbericliteral)。JavaScript支持的数值直接量的形式有以下几种:1整型直接量2浮点型直接量3特殊的数值,4.2.2字符串类型,字符串(string)是由Unicode字符(Ja

10、vaScript1.3之前的版本只支持ASCII码字符)、数字、标点符号等组成的序列。它是JavaScript中用来表示文本的数据类型。JavaScript和C以及Java不同,它没有char这样的字符数据类型。要表示单个字符,必须使用长度为1的字符串。1字符串直接量2转义字符,4.2.3布尔型,数值型数据和字符串类型的数据的值都有无穷多,但是布尔型数据的值只有两个。分别由布尔型直接量“true”和“false”来表示,分别代表真和假。它主要用来说明或代表一种状态或标志,通常是在程序中比较所得的结果。例如:x=10这行代码测试了变量x的值是否和数值10相等。如果相等,比较的结果就是布尔值tru

11、e,否则结果就是false。也可以用于在条件语句中测试条件是否成立。例如:if(finished=false)document.write(请继续运行程序!);其中finished是用来代表填写是否完成的布尔型变量。如果completion的值为假表示还没有完成,因而输出“请继续运行程序!”,4.2.4空值型,JavaScript中还有一个特殊的空值型数据,用关键字null来表示,它表示“无值”。它并不表示“null”这4个字母,也不是0和空字符串,而是JavaScript的一种对象类型。null常常被看作对象类型的一个特殊值,即代表“无对象”的值。null是个独一无二的值,有别于其他所有的值

12、。如果一个变量的值为null,那么就表示它的值不是有效的对象、数字、字符串和布尔值。null可用于初始化变量,以避免产生错误。也可用于清除变量的内容,从而释放与变量相关联的内存空间。当把null赋值给某个变量后,这个变量中就不再保存任何有效的数据了。,4.2.5未定义值,在JavaScript中还有一个特殊的未定义值,用undefined来表示。如下情况使返回undefined值。使用了一个并未声明的变量时。使用了已经声明但还没有赋值的变量时。使用了一个并不存在的对象属性时。一个变量的类型可以检查是否为“undefined”,但是不能通过与undefined做比较来测试变量是否存在。null和

13、undefined既有区别又有联系。null是JavaScript的保留字,而undefined却不是JavaScript中的保存留字。它是在ECMAScriptv3标准中系统预定义的一个全局变量。,4.2.6类型转换,JavaScript是一种松散类型的程序设计语言,并没有严格的规定变量的数据类型。已经定义数据类型的变量,可以在表达式中自动转换数据类型,或通过相应的方法来转换数据类型。自动类型转换有一定的规则。如果按照JavaScript的类型转换规则没有转换或者转换的类型不对,这时就需要通过相应的方法来进行转换。例如,字符串“10”想要和数字10进行算术加法运算,就需要将字符串“10”转换

14、为数值型。除了需要将字符串类型转换为数值型外,有时候也需要把数值型转换为字符串,或在其他数据类型之间进行转换。,4.3变量,在程序运行期间,程序可以向系统申请分配若干内存单元,用来存储各种类型的数据。系统分配的内存单元要使用一个标记符来标识,并且其中的数据是可以更改的,所以称之为变量。标记内存单元的标记符就是变量名,内存单元中所装载的数据就是变量值。定义一个变量,系统就会为之分配一块内存,程序可以使用变量名来表示这块内存中的数据。,4.3.1变量的命令,JavaScript中的变量命名与其他计算机语言非常相似,包含以下几个要点:变量名必须以大写字母(AZ)、小写字母(az)或下划线(_)开头。

15、其他的字符可以用字母、下划线或数字(09)。变量名中不能有空格、”+”号、”-“号等其他符号。不能使用JavScript中的保留字作为变量名。这些保留字是JavaScript内部使用的,不能作为变量的名称。例如var、int、double、true等都不能作为变量的名称。在对变量命名时,最好把变量名的意义与其代表的内容对应起来,以便能方便地区分变量的含义。例如,name这样的变量就很容易让人明白其代表的内容。JavaScript变量名是区分大小写的,因此在使用时必须确保大小写相同。不同大小写的变量,例如name、Name、NAME,将被视为不同的变量。JavaScript变量命名约定与Java

16、类似。也就是说,对于变量名为一个单词的,则要求其为小写字母,例如:area。对于变量名由两个或两个以上的单词组成,则要求第二个和第二个以后的单词的首字母为大写,例如,userName。,4.3.2变量声明,变量在使用之间必须声明。这不仅是JavaScript的要求,也是一个好的编程习惯。由于JavaScript是弱类型语言,因此它不像大多数高级语言那样强制限定每种变量的类型,也就是说在创建一个变量时可以不指定该变量将要存放何种类型的信息。实际上,根据需要,还可以给同一个变量赋予一些不同类型的数据。在JavaScript中声明变量的方式有以下两种:1使用关键字var显式声明变量2使用赋值语句隐式

17、地声明变量,4.3.3变量赋值,不管声明变量的时候是否赋值,在程序中任何地方需要改变变量的值时都可以使用赋值语句来给变量赋值。赋值语句由变量名、等号以及确定的值组成。赋值语句的格式同上面的格式3相同,即:格式4:变量名=值;格式3中的变量名一般是在程序中第一次出现时,表示在声明变量的同时给变量赋值。而格式4中的变量名可以是在程序中已经出现过的变量。经常是改变变量的值,甚至还能改变变量的类型。,4.4表达式与运算符,在定义完变量之后,就可以对它们进行赋值、改变、计算等一系列操作。这一过程通常通过表达式来完成。表达式是变量、常量、布尔及运算符的集合。运算符是完成操作的一系列符号。,4.4.1表达式

18、概述,为使变量有用,需要能够在不同的上下文中处理和评估它们,表达式提供了这一能力。本质上讲表达式不过是变量,运算符以及其他表达式的集合,所有表达式均计算成一个值。在实际中有两种类型的表达式,仅具有值的表达式以及把值赋给变量的表达式。这两种类型的实例,例如:example=“AnExample”是把值赋给变量example的表达式,而“TheNumberis”“10”是仅具有值的表达式。,4.4.2运算符概述,表达式是利用运算符来连接数据的。运算符是完成操作的一系列符号,运算符用于将一个或几个数据按照某种规则进行运算,并产生一个操作结果。它必须作用在数据上才有效,使用运算符的数据称为操作数。根据

19、运算类别,JavaScript中的运算符主要有算术运算符、字符串运算符、逻辑运算符、比较运算符、条件运算符等。根据操作数的个数,可以将JavaScript中的运算符分为以下几种。单目运算符:只作用于一个数据的运算符。双目运算符:作用于两个数据上的运算符。三目运算符:作用于三个数据上的运算符。,4.4.3算术运算符,JavaScript中的算术运算符除了有标准的双目运算符加()、减()、乘(*)、除(/)这些基本运算符外,还包括其他几种。具体如下:1加(+)、减(-)、乘(*)、除(/)运算符2取模运算符(%)3取反运算(-)4增量运算符(+)和减量运算符(-),4.4.4赋值运算符,在前面创建

20、变量时,实际上已经使用赋值运算符(=)给变量赋初值了。赋值运算符(=)的作用是将它右边的表达式计算出来的值复制给左边的变量。例如,a=5+1就表示把赋值号右边的表达式5+1计算出来的结果值6复制给左边的变量a,这样变量a的值就是6。赋值运算符(=)还可以用来给多个变量指定同一个值。例如,a=b=c=1,执行该语句后,变量a、b、c的值都为1。,4.4.5关系运算符,关系运算符又称作比较运算符。是一个双目运算符,用于比较操作数之间的大小、是否相等等,比较运算的结果是布尔型的值true或false。比较运算符的操作数可以是数值、字符串,也可以是布尔值。以下是JavaScript支持的关系运算符及其

21、解释。:大于=:大于等于:等于:严格等于!=:不等于!:严格不等于,4.4.6逻辑运算符,逻辑运算符通常在条件语句中使用。它们与关系运算符一起构成复杂的判断条件。JavaScript提供了3种逻辑运算符:逻辑与(&)、逻辑或(|)、逻辑非(!)。具体解释如下。逻辑与(&):当两个操作数的值都为true时,运算结果为true,否则为false。因此,如果逻辑与运算符左边的表达式的计算结果为零、null或空字符串“”,那么整个表达式的结果就是false。如果逻辑与运算符左边的表达式的计算结果为true,此时计算逻辑与运算符右侧的表达式。如果这个表达式的值也是true,那么整个表达式的结果为true

22、。否则如果左边值为true,右边值为false,那么整个表达式的值为false。逻辑或(|):只要两个操作数中有一个值为true时,运算结果就为true。如果两个操作数的值都为假,则运算结果为假。如果逻辑或运算符左边的表达式计算结果为true,那么就不再计算或运算符右边的表达式的值,并且整个表达式的值为true;如果逻辑或运算符左边的表达式计算结果为false,那么计算或运算符右侧的表达式的值,如果这个值为true,那么整个表达式的值为true;如果右侧表达式计算的结果也为false,那么整个表达式的值为false。逻辑非(!):对操作数取反。即true值非运算的结果为false,false值

23、非运算的结果为true。用于否定一个运算的结果。“真”的逻辑非值为“假”,“假”的逻辑非值为“真”。逻辑非是一个单目运算符,它只有一个操作数。,4.4.7字符串运算符,字符串运算符只有一个字符串连接运算符(+),它是一个双目运算符。在JavaScript中,可以使用字符串连接运算符将两个字符串连接起来形成一个新的字符串。例如,“This”+“is”的运算结果为“Thisis”,“中国”+“青岛”运算结果为”中国青岛”。当操作数中至少有一个操作数是字符串时,JavaScript解释器将另一操作数转换为字符串,其中数据转换为相应的字符串,而布尔型数据则相应地转换为“true”或“false”。例如

24、,“36”+2的运算结果为“362”,“Itis”+true的运算结果为“Itistrue”。另外,字符串连接运算符还可以和前面的赋值运算符联合使用,形成“+=”运算符,它的作用是,将运算符右侧的字符串拼接到该运算符左侧字符串的后面,并将结果赋值给运算符左侧的操作数。,4.4.8其他运算符,除了前面介绍的各种运算符以外,JavaScript还提供了位操作运算符、条件运算符等其他一些十分有用的运算符。,4.4.9运算符的优先级,运算符优先级是指在一个表达式中,运算符的优先顺序。程序的执行顺序将依据运算符的优先级顺序。例如,在进行四则运算时,规则是乘除、后加减。这就是说,乘法和除法的运算优先级高于

25、加法和减法的优先级。同一优先级的运算符按从左到右方式进行计算,这就是运算符的结合方式。所有的算术运算符都是从左向右执行,所以如果有两个或者更多的算术运算符有相同的优先级,那么左边的将先执行,然后依次执行。如果想改变运算的执行顺序,就需要使用成对的括号,括号内的运算将比括号外的运算先执行。如果两个或者两个以上的运算符有相同的优先级,JavaScript根据运算符的执行顺序进行排序。一般的都是从左向右。但是也有一些是从右向左。,4.4.10表达式中的类型转换,JavaScript是一种称为松散类型的程序设计语言,并没有严格的规定变量的数据类型。也就是说,已经定义数据类型的变量,在表达式中会按一定的

26、规则自动进行数据类型的转换。当表达式中出现不同数据类型时,JavaScript会自动进行数据类型转换以使它们相容。通常来讲,类型转换是根据优先级进行的。在JavaScript中,字符串优先级最高,然后依次是浮点型、整型、布尔型。,4.5正则表达式,正则表达式是由英文词语RegularExpression翻译而来。最早是在1956年,一位叫StephenKleene的美国数学家在WarrenMcCulloch和WalterPitts早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这

27、个术语。随后,正则表达式被应用于Unix中的qed编辑器。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。正则表达式经过几个时期的发展,现在的标准已经被ISO(国际标准组织)批准和被OpenGroup组织认定。,4.5.1正则表达式定义,在Windows操作系统中,使用“?”和“*”通配符来查找硬盘上的文件时,“?”通配符匹配文件名中的单个字符,“*”通配符匹配零个或多个字符。data?.tex就是一种文本模式,它能匹配data1.tex、data2.tex、dataX.tex等等文件名。同理data*.tex就是另外一种文本模式。正则表达式的功能和概念类似“?”和“

28、*”通配符,但它的功能更强大,而且更灵活。正则表达式就是符合某种规则的表达式。可以将正则表达式理解为一种对文字进行模糊匹配的语言,它用一些特殊的符号(称为元字符)来代表具有某种特性(例如,某一个字符必须是数字字符)的一组字符以及指定匹配的次数。含有元字符的文本不再表示某一具体的文本内容,而是形成了一种文本模式,它可以匹配符合这种模式的所有文本串。,4.5.2RegExp对象,JavaScript中提供了一个名为RegExp的对象来完成有关正则表达式的操作和功能,每一条正则表达式模式对应一个RegExp对象实例。在JavaScript中,有两种方式可以创建RegExp对象的实例:(1)使用RegExp对象的显示构造函数,语法为:varvarname=newRegExp(“pat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论