第2章JavaScript编程的语言基础JavaScript脚本语言作为一门功能强大、使用范围较广的程序语言,其语言基础包括数据类型、变量、运算符、函数以及核心语句等内容。本章主要介绍JavaScript脚本语言的基础知识,带领读者初步领会JavaScript脚本语言的精妙之处,并为后续章节的深入学习打下坚实的基础。2.1编程准备在正式介绍Javascript脚本语言之前,先介绍使用JavaScript脚本进行编程需要首先了解的知识,包括大小写敏感性、空白字符以及分号等内容,以及脚本编程过程中需遵守的一些约定,以编写合法的JavaScript脚本程序。2.1.1脚本执行顺序JavaScript脚本解释器将按照程序代码出现的顺序来解释程序语句,因此可以将函数定义和变量声明放在head和/head之间,此时与函数体相关的操作不会被立即执行。2.1.2大小写敏感JavaScript脚本程序对大小写敏感,相同的字母,大小写不同,代表的意义也不同,如变量名name、Name和NAME代表3个不同的变量名。在JavaScript脚本程序中,变量名、函数名、运算符、关键字、对象属性等都是对大小写敏感的。同时,所有的关键字、内建函数,以及对象属性等的大小写都是固定的,甚至混合大小写,因此在编写JavaScript脚本程序时,要确保输入正确,否则不能达到编写程序的目的。2.1.3空白字符空白字符包括空格、制表符和换行符等,在编写脚本代码时占据一定的空间,但脚本被浏览器解释执行时无任何作用。脚本程序员经常使用空格作为空白字符,JavaScript脚本解释器是忽略任何多余空格的。2.1.4分号在编写脚本语句时,用分号“;”作为当前语句的结束符,例如变量的定义语句:varx=25;vary=16;varz=x+y;当然,也可将多个语句写在同一行中,例如:varx=25;vary=16;varz=x+y;值得注意的是,为养成良好的编程习惯,尽量不要将多个语句写在一行中,避免降低脚本代码的可读性。2.1.5块在定义函数时,使用大括号“{}”将函数体封装起来:在使用循环语句时,使用大括号“{}”将循环体封装起来从本质上讲,使用大括号“{}”将某段代码封装起来后,构成“块”的概念,JavaScript脚本代码中的块,即为实现特定功能的多句(也可为空或一句)脚本代码构成的整体。2.2数值类型一个语言提供多种数值类型是为了更好的诠释空间中的数据状态。本节介绍JavaScript中的数值类型。2.2.1整型和浮点数值JavaScript允许使用整数类型和浮点类型两种数值,其中整数类型包含正整数、0和负整数;而浮点数则可以是包含小数点的实数,也可以是用科学计数法表示的实数。2.2.2八进制和十六进制在整数类型的数值中,数制可使用十进制、八进制以及十六进制,例如:varage=32;//十进制varnum=010;//八进制varnum=C33;//十六进制2.3变量几乎任何一种程序语言都会引入变量(variable),包括变量标识符、变量申明和变量作用域等内容。JavaScript脚本语言中也将涉及到变量,其主要作用是存取数据以及提供存放信息的容器。在实际脚本开发过程中,变量为开发者与脚本程序交互的主要工具。下面分别介绍变量标识符、变量申明和变量作用域等内容。2.3.1变量标识符与C++、Java等高级程序语言使用多个变量标识符不同,JavaScript脚本语言使用关键字var作为其唯一的变量标识符,其用法为在关键字var后面加上变量名。例如:varage;varMyData;2.3.2变量申明在JavaScript脚本语言中,声明变量的过程相当简单,例如通过下面的代码声明名为age的变量:varage;2.3.3变量作用域要讨论变量的作用域,首先要清楚全局变量和局部变量的联系和区别:全局变量:可以在脚本中的任何位置被调用,全局变量的作用域是当前文档中整个脚本区域。局部变量:只能在此变量声明语句所属的函数内部使用,局部变量的作用域仅为该函数体。2.4弱类型JavaScript脚本语言像其他程序语言一样,其变量都有数据类型,具体数据类型将在下一节中介绍。高级程序语言如C++、Java等为强类型语言,与此不同的是,JavaScript脚本语言是弱类型语言,在变量声明时不需显式地指定其数据类型,变量的数据类型将根据变量的具体内容推导出来,且根据变量内容的改变而自动更改,而强类型语在变量声明时必须显式地指定其数据类型。2.5基本数据类型在实现预定功能的程序代码中,一般需定义变量来存储数据(作为初始值、中间值、最终值或函数参数等)。变量包含多种类型,JavaScript脚本语言支持的基本数据类型包括Number型、String型、Boolean型、Undefined型、Null型和Function型,分别对应于不同的存储空间。2.5.1Number型Number型数据即为数值型数据,包括整数型和浮点型,整数型数制可以使用十进制、八进制以及十六进制标识,而浮点型为包含小数点的实数,且可用科学计数法来表示。一般来说,Number型数据为不在括号内的数字,例如:varmyDataA=8;varmyDataB=6.3;上述代码分别定义值为整数8的Number型变量myDataA和值为浮点数6.3的Number型变量myDataB。2.5.2String型String型数据表示字符型数据。JavaScript不区分单个字符和字符串,任何字符或字符串都可以用双引号或单引号引起来。2.5.3Boolean型Boolean型数据表示的是布尔型数据,取值为ture或false,分别表示逻辑真和假,且任何时刻都只能使用两种状态中的一种,不能同时出现。例如,下列语句分别定义Boolean变量bChooseA和bChooseB,并分别赋予初值true和false:varbChooseA=true;varbChooseB=false;2.5.4Undefined型Undefined型即为未定义类型,用于不存在或者没有被赋初始值的变量或对象的属性,如下列语句定义变量name为Undefined型:varname;定义Undefined型变量后,可在后续的脚本代码中对其进行赋值操作,从而自动获得由其值决定的数据类型。2.5.5Null型Null型数据表示空值,作用是表明数据空缺的值,一般在设定已存在的变量(或对象的属性)为空时较为常用。区分Undefined型和Null型数据比较麻烦,一般将Undefined型和Null型等同对待。2.5.6Function型Function型表示函数,可以通过new操作符和构造函数Function()来动态创建所需功能的函数,并为其添加函数体。例如:varmyFuntion=newFunction(){staments;};JavaScript脚本语言除了支持上述6种基本数据类型外,也支持组合类型,如数组Array和对象Object等,下面介绍组合类型。2.6组合类型JavaScript脚本支持的组合类型比基本数据类型更为复杂,包括数组Array型和对象Object型。本节将简要介绍上述组合类型的基本概念及其用法,在本书后续章节将进行专门论述。2.6.1Array型Array型即为数组,数组是包含基本和组合数据的序列。在JavaScript脚本语言中,每一种数据类型对应一种对象,数组本质上即为Array对象。2.6.2Object型对象为可包含基本和组合数据的组合类型,且对象的成员作为对象的属性,对象的成员函数作为对象的方法。在JavaScript脚本语言中,可通过在对象后面加句点“.”并加上对象属性(或方法)的名称来访问对象的属性(或方法)2.7运算符编写JavaScript脚本代码过程中,对目标数据进行运算操作需用到运算符。JavaScript脚本语言支持的运算符包括:赋值运算符、基本数学运算符、位运算符、位移运算符、高级赋值语句、自加和自减、比较运算符、逻辑运算符、逗号运算符、空运算符、?...:…运算符、对象运算符以及typedof运算符等,下面分别予以介绍。2.7.1赋值运算符JavaScript脚本语言的赋值运算符包含“=”、“+=”、“—=”、“*=”、“/=”、“%=”、“&=”、“^=”等。2.7.2基本数学运算符JavaScript脚本语言中基本的数学运算包括加、减、乘、除以及取余等,其对应的数学运算符分别为“+”、“-”、“*”、“/”和“%”等。2.7.3位运算符JavaScript脚本语言支持的基本位运算符包括:“&”、“|”、“^”和“~”等。脚本代码执行位运算时先将操作数转换为二进制数,操作完成后将返回值转换为十进制。位运算符的作用。2.7.4位移运算符位移运算符用于将目标数据往指定方向移动指定的位数。JavaScript脚本语言支持“”、“”和“”等位移运算符。2.7.5自加和自减自加运算符为“++”和自减运算符为“--”分别将操作数加1或减1。值得注意的是,自加和自减运算符放置在操作数的前面和后面含义不同。运算符写在变量名前面,则返回值为自加或自减前的值;而写在后面,则返回值为自加或自减后的值。2.7.6比较运算符JavaScript脚本语言中用于比较两个数据的运算符称为比较运算符,包括“==”、“!=”、“”、“”、“=”、“=”等。2.7.7逻辑运算符JavaScript脚本语言的逻辑运算符包括“&&”、“||”和“!”等,用于两个逻辑型数据之间的操作,返回值的数据类型为布尔型。2.7.8逗号运算符编写JavaScript脚本代码时,可使用逗号“,”将多个语句连在一起,浏览器载入该代码时,将其作为一个完整的语句来调用,但语句的返回值是最右边的语句。2.7.9空运算符空运算符对应的关键字为“void”,其作用是定义一个表达式,但该表达式并不返回任何值。修改源程序2.11中变量赋值语句为:dataA=(dataB=1,dataC=2,dataD=3);2.7.10?...:运算符在JavaScript脚本语言中,“?...:”运算符用于创建条件分支。在动作较为简单的情况下,较之if…else语句更加简便,其语法结构如下:(condition)?statementA:statementB;2.7.11对象运算符JavaScript脚本语言主要支持四种对象运算符,包括点号运算符、new运算符、delete运算符以及()运算符等。2.7.12typeof运算符typeof运算符用于表明操作数的数据类型,返回数值类型为一个字符串。在JavaScript脚本语言中,其使用格式如下:varmyString=typeof(data);2.7.13运算符优先级JavaScript脚本编程中,运算表达式中可能含有多个运算符,同其他程序语言一样,这些运算符也是有处理的先后顺序的。2.8核心语句前面小节讲述了JavaScript脚本语言数据结构方面的基础知识,包括基本数据类型、运算符、运算符优先级等,本节将重点介绍JavaScript脚本的核心语句。2.8.1基本处理流程基本处理流程就是对数据结构的处理流程,在JavaScript里,基本的处理流程包含三种结构,即顺序结构、选择结构和循环结构。2.8.2if条件假设语句if条件假设语句是比较简单的一种选择结构语句,若给定的逻辑条件表达式为真,则执行一组给定的语句。其基本结构如下:if(conditions){statements;}2.8.3switch流程控制语句在if条件假设语句中,逻辑条件只能有一个,如果有多个条件,可以使用嵌套的if语句来解决,但此种方法会增加程序的复杂度,并降低程序的可读性。若使用switch流程控制语句就可完美地解决此问题。2.8.4for循环语句for循环语句是循环结构语句,按照指定的循环次数,循环执行循环体内语句(或语句块),其基本结构如下:for(initialcondition;testcondition;altercondi