第一章概述javascript是一种基于对象和事件驱动并具有安全性能的脚本语言。使用它的目的是和HTML以及动态的JAVA脚本语言即JAVA小程序一起实现在一个WEB页面中链接多个对象,与WEB客户交互。他是通过嵌入或者调入标准的HTML语言中实现的。它有以下几个基本的特点:1、是一种脚本语言它采用小程序段的方式实现编程,是一种解释型语言,它不需要编译,而是在运行过程中被逐行地解释执行。2、基于对象的语言javascript是一种基于对象的语言,也可以看作是面向对象,这意味着,它可以运用自己已经创建的对象,因此许多功能来自于脚本环境中对象的方法与脚本的相互作用。3、简单性javascript的简单性主要体现在以下:I.他是一种基于JAVA基本语句和控制流之上的一种简单而紧凑的设计。II.变量类型采用的是弱类型,没有严格的数据类型。4、安全性他不允许访问本地硬盘,不能将数据存入到服务器,不允许对网络文档进行修改和删除,只能通过浏览器实现信息的浏览或动态交互。可以有效的防止数据丢失。5、动态性它可以直接对用户输入进行响应,无须通过WEB服务程序。它对用户的响应是通过事件驱动的,事件(Event)即用户在网页上执行某种操作产生的动作,如按下鼠标,移动窗口,选择菜单等。6、跨平台性javascript依赖浏览器来运行,所以和操作系统无关,只要能运行浏览器,且浏览器支持javascript就可以运行。综上所述,javascript是一种新的描述语言,可以被嵌入HTML文件中。可以响应用户的操作,而不必通过网络来回的传输资料,对用户输入的资料可以不需要传回服务器处理,再传回客户端的过程,能够直接在客户端使用javascript应用程序处理。第二章词法结构2.1字符集:unicode(16位,支持国际化);2.2大小写敏感性:严格区分大小写;HTML是不区分大小写的。注意和客户端的Javascript的区分;2.3空白符和换行符:Javascript会忽略记号中空格,制表符和换行符,除非他们是字符串或正则表达式直接量的一部分;记号token就是一个关键字,变量名,数字,函数名或者其它实体,如果在一个记号中插入了空格、制表符或换行符,就分为了2个记号(语法错误);可以缩进代码,便于阅读;2.4可选的分号:Javascript的简单语句后通常都有分号;这里漏掉分号可能会引起错误;举例:returntrue;可能变成return;true;因为Javascript通常自动插入分号。2.5注释:Javascript支持C和C++的注释示例://单行注释/*这也是注释*//**多行注释*也是注释*/2.6直接量(literal)就是程序中直接显示出来的数据值;例如数字,字符串,布尔值等;Javascript1.2起支持数组直接量和对象直接量;2.7标记符(Identifier)其实一个名字,用来命名变量和函数,或者用作Javascript中某些循环的标签;标记符的命名规则:(同其他语言相同)第一个字母必须是字母、下划线或者美元符号(1.1以后才支持,所以少用);接下来可以是字母、数字、下划线、美元符号;但是标记符不能和Javascript中用于其他目的的关键词同名;提到允许标识符中有Unicode转义序列?,\u后接4个十六进制的数字,用来指定一个16位的字符编码,例如π也可以写作\u03c0,即使不支持Unicode字符集的文本编辑器和其他工具也可以执行。2.8保留字保留字不可用作标识符(变量名、函数名以及循环标签)此外,你应避免把Javascript预定义的全局变量名,或者全局函数名用作标记符(table2-3);如果把这些名字创建变量或函数,就会得到一个错误(如果该属性是只读的)或者重定义一个已经存在的变量或函数,除非你非常明白自己做什么;Table2-1.ReservedJavaScriptkeywordsbreakdoifswitchtypeofcaseelseinthisvarcatchfalseinstanceoftHRowvoidcontinuefinallynewtruewhiledefaultfornulltrywithdeletefunctionreturnTable2-2.WordsreservedforECMAextensionsabstractdoublegotonativestaticbooleanenumimplementspackagesuperbyteexportimportprivatesynchronizedcharextendsintprotectedthrowsclassfinalinterfacepublicTRansientconstfloatlongshortvolatiledebuggerTable2-3.OtheridentifierstoavoidargumentsencodeURIInfinityObjectStringArrayErrorisFiniteparseFloatSyntaxErrorBooleanescapeisNaNparseIntTypeErrorDateevalMathRangeErrorundefineddecodeURIEvalErrorNaNReferenceErrorunescapedecodeURIComponentFunctionNumberRegExpURIError第三章数据类型和值Javascript允许使用三种基本的数据类型——数字,文本字符串和布尔值;还支持两种小数据类型——null(空)和undefined(未定义)【也属于基本的数据类型】;Javascript还支持复合数据类型——对象。对象是值(可以是基本值,也可以是复合值)的集合;Javascript中对象有两种,一种对象是已命名的值的无序集合,另一种是有编号的值的有序集合;后者被称为数组(array);Javascript还定义了另一特殊对象--函数(function),Javascript为函数定义了专门的语法,因此,把函数独立于对象和数组的数据类型;Javascript语言的核心还定义了其他一些专用的对象。这些对象表示的不是新的数据类型,而是新的对象类(class)。Date类是表示日期的对象,RegExp类是表示正则表达式的对象,Error类是表示的是Javascript程序发生的语法和运行时错误的对象。3.1数字(number)在Javascript中,所有的数字都是浮点型数值,并不区别整数型数值和浮点型数值。当一个数字出现在Javascript程序中时,我们称它数值直接量(numericliteral),下面分别介绍:3.11整型直接量在Javascript程序中,十进制的整数是一个数字序列。Javascript的数字格式允许精确表示(-2/53即负2的53次方)和2/53(2的53次方)之间的所有整数。但是注意,Javascript某些整数的运算(例如位运算)是对32的整数执行的,他们的范围是从(-2/31)到(2/31-1)。3.12八进制和十六进制的直接量十六进制:以”0x”开头,其后跟随十六进制的直接量;(0-9,a-f);八进制:以“0”开头。(0-7),有的Javascript不支持八进制,所以最好不要用以0开头的整型直接量。3.13浮点型直接量浮点型直接量可以有小数点。还可以使用指数记数法表示浮点型直接量,简单举例:12345=1.2345e4注意:虽然实数有无穷多个,但是JavaScript的浮点格式能够精确表示出来的却是有限的(18437736874454810627个),这意味着当你在JavaScript中使用实数时,表示出的数字通常是真实数字的近似值。但也够用了。3.14数字的使用Javascript是使用语言自身提供的算术运算符来进行运算的。这些运算符包括(+,-,*,/)。此外,Javascript还采用了大量的算术函数,这些函数被保存为Math对象的属性。例如:Math.sin(x);还有一种方法toString()可以用他的参数指定的基数或底数(底数必须在2和36之间)把数字转换成字符串,例如把一个数字转换成二进制数字,可用:Varx=3;Vary=x..toString(2);//y是”11”要调用一个数字的直接量的toString()方法,就必须使用括号,以免把“.”解释为小数点。Vary=(23).toString(2);3.15特殊的数值Javascript还使用了一些特殊的数值,当一个浮点值大于所能表示的最大值时,输出Infinity,同样,负无穷大就输出–Infinity.另一个特殊数值就是当一个算术运算(如用0除以0)产生了未定义的结果或者错误时返回的。此时,结果是一个非数字的特殊值,输出为NaN(NotaNumber)。相关的函数isFinite()来检测一个数字是否是NaN,正无穷大或负无穷大。Javascript为每个特殊的数值都定义了常量,下面列出。常量含义Infinity无限大的数值NaN特殊的非数字值Number.MAX_VALUE可表示的最大值Number.MIN_VALUE可表示的最小数字(与零最接近的数字)Number.NaN特殊的非数字值Number.POSITIVE_INFINITY表示正无穷大的特殊值Number.NEGATIVE_INFINITY表示负无穷大的特殊值3.2字符串(String)字符串是由Unicode字符,数字,标点符号等组成的序列,注意,与C,C++,Java不同的是它没有char这样的字符数据类型,要表示单个字符,必须使用长度为1的字符串。3.2.1字符串直接量字符串就是由单引号或双引号(’或”)括起来的Unicode字符序列。字符串直接量必须写在一行里,如果将它们写在两行里,可能回将他们截断。如果必须在字符串直接量里面添加一个换行符,可以使用字符序列\n,以后具体介绍转义字符;在客户端的Javascript程序中,HTML也使用单引号和双引号来界定字符串,因此Javascript与HTML同时使用时,最好对Javascript采用一种引用方式,HTML采用另一种引用方式。3.2.2字符串直接量中的转义字符反斜线(\)符号后加一个字符就可以表示在字符串中无法出现的字符。序列所代表的字符\0NUL字符(\u0000)\b退格符(\u0008)\t水平制表符(\u0009)\n换行符(\u000A)\v垂直制表符(\u000B)\f换页符(\u000C)\r回车符(\u000D)\”双引号(\u0022)\’撇号或单引号(\u0027)\\反斜线符(\005C)3.2.3字符串的使用1.能够连接字符串,例如:Msg=‘hello‘+‘world’;//生成字符串‘helloworld’;2.如果要确定字符串的长度,可以使用字符串的length属性。其他方法:charAt,substring,indexof.3.3布尔值(BooleanValues)两个值“true”、”false”。布尔值表示某个事物的真假。布尔值通常用于Javascript的控制结构,例如:If(a==4)b=b+1;elsea=a+1;3.4函数(function)是一个可执行的Javascript代码段,由Javascript定义或者由Javascript实现预定义。虽然函数只能被定义一次,但是可以Javascript可以多次调用或执行它。Javascript函数可以带有实际参数或者形式参数,而且它能返回一个值,以表示计算结果。Javascript中函数是一个真正的数据类型,这就意味着函数可以被储存在变量,数组和对象中。而且函数还可以作为参数传递给其他函数。3.4.1函数直接量函数直接量是用关键字function后面加可选的函数名,用括号括起来的参数列表和用花括号括起来的函数体定义的。所以,函数直接量看起来就像一个函数定义,不过没有函数名。他们之间的最大的区别就是:函数直接量可以出现在其他Javascript