11.1什么是JavaScriptJavaScript是由一种基于对象(Object)和基于事件驱动(EventDriver)并具有安全性能的脚本语言。它是通过嵌入在标准的HTML语言中实现的。它的出现弥补了HTML语言的不足,它是Java与HTML的折衷。它的开发环境简单,不需要Java编译器(事实上Java与JavaScript之间没有任何关系),而是直接运行在Web浏览器中,也就是客户端的脚本言语,因而使用它与HTML超文本标记语言结合在一起,来实现一个Web页面与浏览者交互作用,从而可以开发客户端的应用程序。JavaScript程序本身不能独立存在,它是依附于某个web页面,在浏览器端运行的。21.2JavaScript可以做什么作为一个运行于浏览器环境中的语言,JavaScript被设计用来向web页面添加交互行为,利用它可以完成以下任务。可以将文本动态的放入web页面。类似于这样的一段JavaScript声明可以将一段可变的文本放入HTML页面:document.write(h1+name+/h1)可以对事件做出响应。例如页面载入完成或者当用户单击某个HTML元素时,调用指定的JavaScript程序。可以读写HTML元素。JavaScript程序可以读取及改变当前HTML页面内某个元素的内容,如文本框中的输入内容等。可被用来验证用户输入的数据。在数据被提交到服务器之前,JavaScript可被用来验证这些数据。可被用来检测访问者的浏览器,并根据所检测到的浏览器,为这个浏览器载入相应的页面。可被用来创建cookies,用来存储和取回位于访问者的计算机中的信息。可利用Ajax技术来完成和服务器的直接通信,无刷新的修改当前HTML页面内容。31.3JavaScript的基本语法利用JavaScript编写的HelloWorld程序。如图所示。其代码如下:htmlheadtitleJavaScript学习/title/headscriptlanguage=JavaScript!--alert(HelloWorld!);Document.write(“HelloWorld!”);--/scriptbodyHelloWorld!/body/html通过这个简单的实例,在HTML语言中插入JavaScript脚本语言的语法格式为:Scriptlanguage=JavaScript!--JavaScript代码--/Script41.3JavaScript的基本语法(续)script:脚本标记。它必须以scripttype=“text/javascript”开头,以/script结束。JavaScript语句对大小写敏感。Script在页面中的位置决定了什么时候装载它们,如果希望在其他所有内容之前装载脚本,就要确保脚本在head部分。代码的位置位于HEAD部分的脚本如果把脚本放置到head部分,在页面载入的时候,就同时载入了代码。通常这个区域的JavaScript代码是为body区域程序代码所调用的事件处理函数。位于BODY部分的脚本当你把脚本放置于body部分后,在页面载入时不属于某个函数(因为函数必须经过调用才能运行)的脚本就会被执行,执行后的输出就成为页面的内容。直接位于事件处理部分的代码中位于网页之外的单独脚本文件51.3JavaScript的基本语法(续)可以在一行中写多条语句,一条语句也可以分多行书写。当一行中写多条语句时,语句与语句之间要用分号(;)分隔。当一条语句多行书写时,同一个标识符中的字符必须连续书写,中间不可以有空格。当一行只写一条语句时句未的分号可以不写。标识符与标识符之间的多余空格会被忽略掉(这点与html语言相似)。要将一个字符串分多行书写,每一行要做为一个单独的字符串,然后行尾要用“+”运行算符将位于不同行的字符串连接起来。!----这是个html注释语句,是为了浏览器的支持问题,如果不支持将跳过这部分的执行,现在大部分浏览器都支持JavaScript所以一般不用写。61.4数据类型JavaScript脚本语言同其它语言一样,有它自身的基本数据类型、运算符和表达式以及程序的基本框架结构。JavaScript提供了七种基本的数据类型用来处理数据。但这种语言是一种弱类型的语言,对数据的类型要求不严格,数据的类型可以根据程序的上下文进行自动转换。71.4.1基本的数据类型在JavaScript中数据类型:基本数据类型字符串型(用“”或’’括起来的字符或数值)数值型(整数和实数)布尔型(使用True或False表示)复合数据类型Arrary数组Object对象特殊数据类型空值(null)undefined试图引用一个没有的对象属性,则反回一个undefined值在JavaScript的基本类型中的数据可以是常量,也可以是变量。由于采用弱类型的形式,因而一个数据的变量或常量不必事先作声明,而是在使用或赋值时才确定其数据的类型。当然也可以先声明该数据的类型。81.4.2常量JavaScript的常量主要有以下几种:字符型常量(使用单引号或双引号括起来的一个或多个字符。如JavaScript、1234567890等数值型常量整型常量(又称字面常量,是不能改变的数据。可以使用十六进制(0x)、八进制(0)和十进制表示其值)实型常量(由整数部分加小数部分表示,如13.48、197.99。可以使用科学或标准方法表示:3E6、2e8等)Infinity表示无穷大,这是一个特殊的Number类型NaN表示非数(NotaNumber),这是一个特殊的数值类型,任何数都不与他相等。布尔常量(只有True或False两种值,主要用来说明或代表是或否状态)空值(该变量没有保存有效的数、字符串、boolean、数组或对象)Undefined(对象属性不存在或者声明了变量但从未赋值)91.4.3变量变量是存取数据、提供存放数据的容器。对于变量必须明确变量的命名、变量的类型、变量的声明及其变量的作用域。JavaScript中的变量命名同其他语言非常相似:必须是一个有效的变量名,即变量以字母或下划线开头,中间可以出现数字如x1、y2、_x1、_y2等。除下划线外,变量名不能有空格、+、-和其他符号。不能使用JavaScript中的关键字作为变量。JavaScript定义了50多个关键字,供内部声明用的,如Var、int、double、true等。101.4.3变量(续)JavaScript的关键字breakcasecatchcontinuedefaultdeletedoelsefinallyforfunctionifininstanceofnewreturnswitchthisthrowtrytypeofvarvoidwhileWithabstractbooleanbytecharclassconstdebuggerdoubleenumexportextendsfinalfloatgotoimplementsimportintinterfacelongnativepackageprivateprotectedpublicshortstaticsupersynchronizedthrowstransientvolatile111.4.3变量(续)在JavaScript中,变量可以用命令Var声明:varmytest;定义一个mytest变量,但没有赋予它的值varmytest=“Thisisatest”;定义一个mytest变量,同时赋予了它的值在JavaScript中,变量也可以不作声明,而在使用时再根据数据的类型来确定其变量的类型。如:x1=200x2=345x3=Truex4=12.34等其中x1为整数,x2为字符串,x3为布尔型,x4为实型。121.4.4.运算符和表达式在定义完变量后,就可以对它们进行赋值、改变、计算等一系列操作,这一过程通常由表达式来完成,可以说它是变量、常量及运算符的集合。表达式可以分为算术表达式、字串表达式、赋值表达式及布尔表达式等。运算符是完成操作的一系列符号,在JavaScript中有:算术运算符(+、-、*、/、%等)比较运算符(!=、==等、=、=)逻辑运算符(!、&、&&、|、||等)字串运算符(+)赋值运算符(=、+=、-=、*=、/=、%=)注意运算符的优先级:()、逻辑非、乘除求余、加减、比较、逻辑与、逻辑或、赋值运算符131.5语句语句JavaScript语句是发给浏览器的命令,这些命令的作用是告诉浏览器要做的事情。例如:document.write(欢迎进入JavaScript学习之旅!);语句类型变量声明语句(vartest);变量的赋值语句(test=12);表达式语句(用运算符将常量或变量连接起来形成的式子);返回语句(return);程序流向控制语句对象创建语句注释语句选择语句循环语句break语句continue语句141.5.1选择语句If选择语句的使用。语法格式为:if(条件表达式){语句块;}功能:若条件表达式为true,则执行语句块注:语句块就是用“{”和“}”封闭起来的一条或若干条语句。151.5.1选择语句(续)If…else选择语句语法格式为:if(条件表达式){语句块1;}else{语句块2;}功能:若条件表达式为true,则执行语句块1,否则执行语句块2。161.5.1选择语句(续)If…else选择语句的嵌套格式:if(条件表达式1){语句块1;}elseif(条件表达式2){语句块2;}elseif(条件表达式n){语句块n;}else{语句块n+1;}功能:计算每一个条件表达式,如果结果为true则执行其后相应的语句块。该语句具有互斥性。171.5.1选择语句(续)switch分支语句,和if语句不同的是,它是用于对多种可能相等情况的判断,解决了if…else语句使用过多,逻辑不清的弊端。格式switch(变量或表达式){case常量1:语句1;break;...case常量n:语句n;break;default:语句n+1;}181.5.1选择语句(续)功能:当switch的“变量或表达式”的值与某个case后面的常量相等时,就执行常量后面的语句,碰到“break”之后跳出switch分支选择语句,当所有的case后面的常量都不和“变量或表达式”相等时,执行default后面的语句n+1。191.5.1选择语句(续4)?:选择语句,有些教材也把它看作是一个运算符,叫三目运算符或条件运算符。表达式1?表达式2:表达式3说明先计算表达式1的值,如果表达式1的值为true则执行表达式2,否则执行表达式3。201.5.2循环语句for循环语句的使用,也称计数循环。格式为:for(初值;条件;步长表达式){语句块;}功能:每当进行循环以前都要判断条件,条件为true时,执行语句集,否则跳出循环体,每循环一次计数变量增加或减少步长表达式的值。初值用来设置计数变量并给它赋值。步长表达式用来说明计数变量的变化规律。三个主要语句之间,必须使用逗号分隔。for循环是一般目的的循环。而它的一种特殊应用for…in循环则用于在对象的所有成员内自动移位,其语法格式为:for(iin对象){语句块;}211.5.2循环语句(续)while循环语句的使用。格式为:while(条件){语句块;}功能:每当进行循环以前都要判断条件,条件为true时,执行语句集,否则跳出循环体。221.5.2循环语句(续2):do…while循环语句的使用。格式为:do{语句块;}while(条件)功能:先执行一次循环再判断条件,条件为true时,执行语句块,否则跳出循环体。break语句、continue语句:break语句:跳出