《第二章JavaScript.ppt》由会员分享,可在线阅读,更多相关《第二章JavaScript.ppt(107页珍藏版)》请在三一办公上搜索。
1、第2章 JavaScript语言,第二章(JavaScript),9/11/2023,1,JavaScript简介JavaScript数据类型JavaScript变量JavaScript表达式和运算符JavaScript语句JavaScript对象JavaScript数组Javascript函数JavaScript类和模块Windows对象和Document对象,JavaScript简介 JavaScript是一种轻量级的、解释性的程序设计语言,而且具备一定面向对象的能力。JavaScript与操作系统无关,它依赖JavaScript的解释引擎。浏览器通过内嵌JavaScript的解释引擎从而
2、获得了对JavaScript的处理能力。通过在网页中嵌入标签,将JavaScript脚本添加到网页中,使得网页不再是简单的静态HTML,而是包含了控制浏览器的程序、动态创建HTML内容和与用户交互的程序,即动态HTML(DHTML)JavaScript与Java的区别Java和JavaScript是两个完全不同的产品。Java是SUN公司推出的面向对象的程序设计语言;JavaScript是Netscape公司的产品,目的是为了扩展Netscape浏览器的功能Java是面向对象的程序设计语言,即使开发简单的程序也必须从类定义开始;JavaScript是基于对象的,本身提供了非常丰富的内部对象供设
3、计人员使用Java语言的最小单位是类定义,而JavaScript中则充斥着大量函数Java语言必须经过编译生成字节码,然后由Java虚拟机运行这些字节码;JavaScript是一种脚本语言,其源代码无须经过编译,由浏览器解释执行,9/11/2023,2,JavaScript简介,第二章(JavaScript语言),JavaScript简介Java采用强类型变量,所有变量必须先声明后使用;JavaScript采用弱类型变量,变量使用前无须声明,而由解释器在运行时检查其数据类型Java代码是一种与HTML无关的格式,必须通过HTML中引用外媒体方式进行装载,其代码以字节码的形式保存在独立的文档中;
4、JavaScript的代码是一种文本字符格式,可以直接嵌入HTML文档中,并且可动态装载JavaScript的版本 JavaScript是由网景(Netscape)公司创建,标准版本的名字叫做ECMAScript,目前ECMAScript第3版已经被所有浏览器完整地实现了。ECMAScript第5版浏览器也已经开始实现它了,有时我们也会看到JavaScript的版本号(比如JavaScript1.5或JavaScript1.8)这些是Mozilla的版本号,1.5版本基本上就是ECMAScript3,后续版本包含了非标准的语言扩展,9/11/2023,3,JavaScript简介,第二章(Ja
5、vaScript语言),运行JavaScript(1)使用javascript:前缀构建执行JavaScript代码的URL 在设置URL的地方都可以使用这种以javascript:作为前缀的URL,在用户激发该URL时,javascript:之后的JavaScript代码就会获得执行(2)使用元素来包含JavaScript代码【2.1run】如果页面里需要包含大量JavaScript代码,则建议将这些JavaScript脚本放在标签和之间,元素既可作为子元素,也可作为子元素(3)导入JavaScript文件【2.1test】为了让HTML页面和JavaScript脚本更好地分离,我们可以将J
6、avaScript脚本单独保存在一个*.js文件中,HTML页面导入该*.js文件即可。,9/11/2023,4,JavaScript简介,第二章(JavaScript语言),JavaScript基本数据类型 JavaScript的基本数据类型有5种:数值类型:包含整数和浮点数布尔类型:只有true和false两种值字符串类型:字符串变量必须以引号括起来,引号可以是单引号,也可以使双引号undefined类型:专门用来确定一个已经创建但是没有初值的变量null:用于表明某个变量的值为空除此之外,JavaScript还支持复合数据类型:对象、数组、函数、以及一些对象类。数值类型【2.2simpl
7、eNumber2】JavaScript并不区分整型数值和浮点数值,所有的数字都是由浮点型表示的。JavaScript采用IEEE754标准定义的64位浮点格式来表示数字,所能表示的最大值为:1.797693134862315710303,最小值是510-324。JavaScript中的数值形式可以非常丰富,完全支持科学计数法表示。语法格式:数字1 E 数字2,9/11/2023,5,JavaScript数据类型,第二章(JavaScript语言),JavaScript基本数据类型数值类型如果数值只有小数部分,则可以省略整数部分的0,但小数点不能省略【2.2simpleNumber2】e=.24
8、e-2;数值直接量不要以0开始,因为JavaScript不仅支持十进制数,还支持其他进制的数,八进制和十六进制数都以0开始【2.2octal】a=0 x13;/十六进制 b=014;/八进制当数值变量的值超出了其表值范围时,将出现两个特殊值:Infinity(无穷大)和-Infinity(负无穷大);Infinity、-Infinity与其他数值进行算术运算时,整个算术表达式将变成另一个特殊值:NaN;但Infinity和-Infinity都可以执行比较运算,即Infinity等于Infinity,而-Infinity等于-Infinity【2.2infinity】JavaScript中的算术
9、运算允许除数为0,当除数和被除数同时为零,得到结果是NaN,正数除零的结果就是Infinity,负数除零的结果就是-InfinityNaN如果在算术表示中,整个算术表达式的值为NaN;NaN不会与任何数值变量相等,也就是NaN=NaN也返回false;JavaScript提供isNaN()函数来判断某个变量是否为NaN【2.2judgeNan】,9/11/2023,6,JavaScript数据类型,第二章(JavaScript语言),JavaScript基本数据类型字符串类型字符串(string)是由单引号或者双引号括起来的Unicode字符序列,其中可以含有0个或多个字符。与C、C+或Jav
10、a不同的是,JavaScript并没有char这种单个字符的数据类型,所以要表示单个字符,只能用长度为1的字符串来代替。JavaScript的字符串类型必须以引号括起来,此处的引号既可以是单引号也可以是双引号 a=Hello JavaScript b=Hello JavaScriptJavaScript中比较两个字符串的字符序列是否相等使用=即可,无须使用equals()方法,9/11/2023,7,JavaScript数据类型,第二章(JavaScript语言),JavaScript基本数据类型字符串类型JavaScript操作字符串的方法:【2.2StringMethod】charAt()
11、:获取字符串特定索引处的字符charCodeAt():返回字符串中特定索引处的字符对应的Unicode值length:直接返回字符串的长度。JavaScript中的中文字符算一个字符toUpperCase():将字符串的所有字母转换成大写字母toLowerCase():将字符串的所有字符转换成小写字母fromCharCode():将系列Unicode值转换成字符串indexOf():返回字符串中特定字符串第一次出现的位置lastIndexOf():返回字符串中特定字符串最后一次出现的位置substring():返回字符串的某个子串slice():返回字符串的某个子串,支持负数参数match()
12、:使用正则表达式搜索目标子字符串search():使用正则表达式搜索目标子字符串concat():用于将多个字符串拼接成一个字符串split():将某个字符串分割成多个字符串,可以指定分隔符replace():将字符串中某个子串以特定字符串替代,9/11/2023,8,JavaScript数据类型,第二章(JavaScript语言),JavaScript基本数据类型Undefined和null类型【2.2undefined】undefined类型的值只有undefined一个,该值用于表示某个变量不存在,或者没有为其分配值,也用于表示对象的属性不存在;null用于表示变量的值为空undefin
13、ed和null的区别:undefined表示没有为变量设置值,null表示将变量值设为空注意:很多时候undefined和null本身就相等,即null=undefined将返回true;如果我们要精确区分null和undefined应该考虑使用精确等于符(=),9/11/2023,9,JavaScript数据类型,第二章(JavaScript语言),JavaScript复合数据类型 复合类型是由多个基本数据类型(也可以包含复合类型)组成的数据体。对象(Object)对象是一系列命名变量和函数的集合。其中命名变量的类型可以是基本数据类型,也可以是复合类型;对象中的命名变量称为属性,而对象中的函
14、数称为方法;对象访问属性和函数的方法都是通过“.”来进行JavaScript提供了大量的内置对象和内置类,同时也允许用户自定义对象和类;JavaScript常用的内置类:,9/11/2023,10,JavaScript数据类型,第二章(JavaScript语言),数组(Array)【2.2arr】数组是一系列的变量。与其他语言不同的是,JavaScript的数组中元素的类型可以不同JavaScript数组的三个特征:数组的长度可变同一个数组里数组元素的类型可以互不相同访问数组元素时不会产生数组越界,访问并未赋值的数组元素时,该元素的值为undefined函数(Function)【2.2simp
15、leFunction】函数可以是包含一段可执行性代码,也可以接收调用者传入的参数。JavaScript函数的四个特征:无须声明返回值类型无须声明形参类型可以独立存在,无须属于任何类必须使用function关键字定义,9/11/2023,11,JavaScript数据类型,第二章(JavaScript语言),全局对象【2.2this】全局对象是预定义的对象,作为 JavaScript 的全局函数和全局属性的占位符。通过使用全局对象,可以访问所有其他所有预定义的对象、函数和属性。全局对象不是任何对象的属性,所以它没有名称。全局对象的特征:全局对象只是一个对象,而不是类。既没有构造函数,也无法实例化
16、一个新的全局对象。全局对象不是任何对象的属性,所以它没有名称。全局对象是预定义的对象,作为 JavaScript 的全局函数和全局属性的占位符。在顶层 JavaScript 代码中,可以用关键字 this 引用全局对象。全局对象是作用域链的头,意味着在顶层 JavaScript 中声明的所有变量都将成为全局对象的属性。通常不必用 this 引用全局对象,因为所有非限定性的变量和函数名都会作为全局对象的属性来查询。通过使用全局对象,可以访问所有其他预定义的对象、函数和属性。全局对象的预定义属性都是不可枚举的,所以可以用 for/in 循环列出所有隐式或显式声明的全局变量。全局属性:NaN,Inf
17、inity,undefined全局函数:eval,parseInt,parseFloat,isNaN,isFinite,decodeURI,encodedURI,encodeURIComponent全局构造函数:Object,Function,Array,String,Boolean,Number,Date,RegExp,Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError其他属性的全局对象:Math,JSON,9/11/2023,12,JavaScript数据类型,第二章(JavaScript语言),
18、包装对象【2.2bz】var s=http:/;var addr=s.sbustring(s.indexOf(:)+2,s.length);JavaScript中不仅提供了数值类型、字符串类型和布尔类型,它同时还提供了数值类、字符串类和布尔类,这些类奖对应的原始数据类型包装了起来,它不但拥有其原始数据值,而且还定义了属性和操作值的方法。当你访问一个字符串的属性或方法时,JavaScript内部会自动创建其包装对象。这个字符串包装对象将替换原始字符串值,它拥有已定义的属性和方法只有当字符串以对象的方式使用时,它的对象才会被创建,并且这个对象时临时性的,在访问了它的属性或方法之后,即不再被使用,它
19、将被系统所回收。这种临时性对象我们称为包装对象。我们也可以通过String(),Number()或Boolean()构造函数来显示创建包装对象注意:=将原始值和其包装对象视为相等,但=将它们视为不等,通过typeof运算符可以看到原始值和其包装对象的不通。,9/11/2023,13,JavaScript数据类型,第二章(JavaScript语言),原始值和对象【2.2ysz】JavaScript中的原始值(undefined、null、布尔值、数字和字符串)与对象、函数和数组有着根本区别。原始值是不可更改的,而对象是可变的。原始值的比较是值的比较,其中对于字符串来将如果两个单独的字符串,当它们
20、的长度相等且每个索引的字符都相等时,JavaScript认为它们相等对象的比较并非值得比较,即使两个对象包含同样的属性及相同的值,它们也是不相等的,各个索引元素完全相等的两个数组也不相等,只有当它们引用同一个基对象时,它们才相等。,9/11/2023,14,JavaScript数据类型,第二章(JavaScript语言),类型转换【2.2ysz】转换成布尔值 方法:(1)使用!var o=23;alert(!o);/转换成字符串,结果是true(2)使用Boolean()var o=new Boolean(23);alert(o);/转换成字符串,结果是false1、数字转换成布尔值除了0被转
21、换成false外,所有自他数字都会被转换成true,NaN 也总是被转换成false2、字符串转换成布尔值除了空字符串被转换成false外,所有字符串都会被转换成true,9/11/2023,15,JavaScript数据类型,第二章(JavaScript语言),3、其他类型转换成布尔值undefined和null会被转换成false,任何对象(包括数组)和函数都会被转换成true转换成字符串值 方法:(1)使用一个字符串与之相加 10+3;(2)使用String()String(22);1、数字转换成字符串数字都是按原样转换成字符串,但用科学计数法表示的数字(也就是带e的)会转换成它内部代表
22、的真实的数字的字符串当null与数字相加时,不会进行字符串连接,而是会把null转换成0来进行数学元素对于任意数组,将会转为;对于9(1个数字元素)将会转为9;,9/11/2023,16,JavaScript数据类型,第二章(JavaScript语言),2、其他类型转换成字符串对于任意数组,将会转为;对于9(1个数字元素)将会转为9;当对象、数组或函数转换成字符串时,会调用它们的 toString()方法来进行转换;数组类的toString()方法将每个数组元素转换为一个字符串,并在元素之间添加逗号后合并成结果字符串 1,2,3.toString()/1,2,3函数类的toString()方法
23、返回这个函数的实现定义的表示方式,通常是将用户定义的函数转换为JavaScript源代码字符串(function(x)f(x);).toString()/function(x)n f(x);n日期类的toString方法返回了一个可读的日期和时间字符串 new Date(2010,0,1).toString()/Fri Jan 01 2010 00:00:00 GMT-0800(PST)正则表达式类的toString()方法将正则表达式对象转换为表示正则表达式直接量的字符串/d+/g.toString()/d+/g除了toString()方法外,还有一个转换对象的函数valueOf(),如果存
24、在任意原始值,它就默认将对象转换为表示它的原始值,而对象是复合值,默认将简单的返回对象本身,而不是返回一个原始值;日期类会返回它的一个内部表示:1970年1月1日以来的毫秒数,9/11/2023,17,JavaScript数据类型,第二章(JavaScript语言),2、其他类型转换成字符串JavaScript中对象到字符串的转换经过如下步骤:如果对象具有toString()方法,则调用这个方法。如果它返回一个原始值,JavaScript将这个值转换为字符串(如果本身不是字符串的话),并返回这个字符串结果。如果对象没有toString()方法,或者这个方法并不返回一个原始值,那么JavaScr
25、ipt会调用valueOf()方法。如果存在这个方法,则JavaScript调用它。如果返回值是原始值,JavaScript将这个值转换为字符串,并返回这个字符串结果否则,JavaScript无法从toString()或valueOf()获得一个原始值,因此这时它将抛出一个类型错误异常,9/11/2023,18,JavaScript数据类型,第二章(JavaScript语言),转换成数字值 方法:(1)使用一个一元的加号运算符,这是最快的方法+x(2)加号以外的其他数学运算符 x-0 或 x*1(3)使用Number()构造函数进行转换 Number(x)1、字符串转换成数字除了空字符串会被转
26、换成0以外,如果字符串中是正确的数字书写形式,那么都可以顺利转换成相应的数字,不管是小数、科学计数还是八进制、十六进制形式等。但是如果参杂了其他不能构成数字或不符合数字书写规则的东西,则会被转换成NaN。NaN是指不是数字的意思,任何数字数字跟NaN进行运算得到的结果都是NaN,NaN甚至跟自己也不相等。,9/11/2023,19,JavaScript数据类型,第二章(JavaScript语言),2、其它类型转换成数字对象和函数总是被转换成NaN,undefined也会被转换成NaN,但null会被转换成0数组会首先被转换成字符串,然后再转换成数字。JavaScript中对象到数字的转换经过如
27、下步骤:如果对象具有valueOf()方法,后者返回一个原始值,则JavaScript将这个原始值转换为数字(如果需要的话)并返回这个数字否则,如果对象具有toString()方法,后者返回一个原始值,则JavaScript将其转换并返回否则,JavaScript抛出一个类型错误异常,9/11/2023,20,JavaScript数据类型,第二章(JavaScript语言),变量声明 在JavaScript程序中,使用一个变量之前应当先声明。变量是使用关键字var来声明的。var i;var i,sum;var message=hello;如果未在var声明语句中给变量指定初始值,那么虽然声明
28、了这个变量,但在给它存入一个值之前,它的初始值就是undefined。JavaScript的变量可以在程序中被先后赋予不同数据类型的值变量的作用域 变量按照作用域的不同,一般分为全局变量和局部变量。全局变量拥有全局作用域,在JavaScript代码中的任何地方都是有定义的;局部变量,作用域是局部性的;在函数内声明的变量只在函数体内有定义,是局部变量;函数的参数也是局部变量;【2.3scope_test】,9/11/2023,21,JavaScript变量,第二章(JavaScript语言),变量的作用域在函数体内,局部变量的优先级高于同名的全局变量。如果在函数体内声明的一个局部变量或者函数参数
29、中带有的变量和全局变量重名,那么全局变量就被局部变量所遮盖【2.3noBlockScope】var scope=global;function checkscope()var scope=local;document.write(scope);全局变量编写代码时可以不写var,但声明局部变量时则必须使用varscope=global;function checkscope()scope=local;document.write(scope);变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有意义的。这意味着变量在声明之前甚至已经可用【2.3noBlockScope2】var scop
30、e=global;function checkscope()document.write(scope);var scope=local;document.write(scope);,9/11/2023,22,JavaScript变量,第二章(JavaScript语言),算术运算符JavaScript的算术运算符主要有:1加法运算符(+)2减法运算符(-)3乘法运算符(*)4除法运算符(/)5模运算(%)6递增运算符(+)7递减运算符(-)“+”运算符规则:优先考虑字符串连接 如果其中一个操作数是字符串或转换为字符串的对象,另外一个操作数将会转为字符串,加法将进行字符串的连接操作;如果两个操作数
31、都不是字符串,那么都将进行算术加法运算 当加号运算符和字符串和数字一起使用时,运算结果将依赖于运算符的运算顺序,9/11/2023,23,JavaScript运算符,第二章(JavaScript语言),“+”运算符举例:,9/11/2023,24,JavaScript运算符,第二章(JavaScript语言),“+”和“-”运算符规则:“+”“-”运算符从不进行字符串连接操作,它总是会将操作数转换为数字并加1或减1 不能再后增量运算符和操作数之间插入换行符,如果插入了换行符,JavaScript将会把操作数当做一条单独的语句,并在其之前补上一个分号举例:x=x+1和+x并不一定相等 如果x为“
32、1”,那么x=x+1的结果就是“11”,而+x的结果是2“/”和“%”运算符规则:当一个整数除以另一个整数时,得到的结果将是浮点型 当除数为0的运算结果为正无穷大或负无穷大,0/0的结果是NaN,所有这些运算均不会报错 求模操作的结果符号和第一个操作数的符号保持一致 求模操作也适用于浮点数举例:5/2/=2.5而不是2-5%2/=-1 6.5%2/=0.2,9/11/2023,25,JavaScript运算符,第二章(JavaScript语言),位运算符JavaScript的位运算符主要有:&:按位与|:按位或:按位非:按位异或:右位移:无符号右移,9/11/2023,26,JavaScrip
33、t运算符,第二章(JavaScript语言),规则:位运算要求它的操作数是整数 位运算会将NaN、Infinity和-Infinity转换为0 按位与,只有两个操作数中相对应的位都是1,结果中的这一位才是1 按位或,如果其中一个操作数相应的位为1,或者两个操作数相应位都是1,那么结果中的这一位就为1 按位异或,如果两个操作数中只有一个相应位为1,那么结果中的这一位就是1 按位非,将操作数的所有位取反 左移,将第一个操作数的所有二进制位进行左移,移动的位数由第二个操作数指定,新的一位用0补充 右移,将第一个操作数的所有二进制位进行右移,移动的位数由第二个操作数指定,如果第一个操作数是正数,移位后
34、用0补充,如果第一个操作数是负的,移位后用1补充 无符号右移,与右移规则基本一致,只是左边的高位总是补充0举例:0 x1234&0 x00FF=0 x0034 0 x1234|0 x00FF=0 x12FF 0 xFF00 0 x00FF=0 x12FF 0 x0F=0 xFFFFFFF0 71=3-71=-4-14=0 x0FFFFFFF,9/11/2023,27,JavaScript运算符,第二章(JavaScript语言),比较运算符JavaScript的比较运算符主要有:大于=:大于等于:小于=:小于等于!=:不等于=:等于!=:严格不等于=:严格等于“=”严格相等运算符规则:“=”首
35、先计算其操作数的值,然后比较这两个值,比较过程没有任何类型转换 如果两个值类型不相同,则它们不相等 如果两个值都是null或者都是undefined,则它们不相等 如果两个值都是布尔值真或假,则它们不相等,9/11/2023,28,JavaScript运算符,第二章(JavaScript语言),“=”严格相等运算符规则:如果其中一个值是NaN,或者两个值都是NaN,则它们不相等 如果两个值为数字且数值相等,则它们相等 如果一个值为0,另一个值为-0,则它们相等 如果两个值为字符串,且所含的对应位上的16位数完全相等,则它们相等 如果它们的长度或内容不同,则它们不等 如果两个引用值指向同一个对象
36、、数组或函数,则它们相等“=”相等运算符规则:如果两个操作数不是同一类型,首先会尝试进行一些类型转换,然后进行比较 如果两个操作数类型不同,“=”也可能会认为它们相等,检测相等将会遵守如下规则和类型转换:如果一个值是null,另一个是undefined,则它们相等 如果一个值是数字,另一个是字符串,先将字符串转换为数字,然后使用转换后的值进行比较 如果一个值true,则将其转换为1再进行比较;如果一个值false,则将其转换为0再进行比较,9/11/2023,29,JavaScript运算符,第二章(JavaScript语言),“=”相等运算符规则:如果一个值是对象,另一个值是数字或字符串,则
37、先将对象转换为原始值,然后再进行比较 其他不同类型之间的比较均不相等()、(=)规则:如果两个操作数是对象,先转换为原始值;在对象转换为原始值后,如果两个操作数都是字符串,那么将按照该字符串的16位Unicode字符的索引顺序进行比较 在对象转换为原始值后,如果至少有一个操作数不是字符串,那么两个操作数都将转换为数字进行数值比较 Infinity比其他任何数字都大,-Infinity比其他任何数字都小,如果其中一个操作数是NaN,那么比较操作符总返回false,9/11/2023,30,JavaScript运算符,第二章(JavaScript语言),in运算符规则:in运算符希望它的左操作数是
38、一个字符串或可以转换为字符串,希望它的右操作数是一个对象 如果右侧对象拥有一个名为左操作数值的属性名,那么返回trueinstanceof运算符规则:instanceof运算符希望左操作数是一个对象,右操作数标识对象的类 如果左侧的对象是右侧的实例,则返回true,9/11/2023,31,JavaScript运算符,第二章(JavaScript语言),逻辑运算符JavaScript的逻辑运算符主要有:逻辑与(&)逻辑或(|)逻辑非(!)“&”逻辑与运算符三层理解:第一层:当操作数都是布尔值的时候,“&”对两个值执行“与”操作,只有在第一个操作数和第二个操作数都是true的时候,它才返回tru
39、e;如果其中一个操作数是false,它返回false 第二层:当操作数不一定是布尔值的时候,有些值可以当做“真值”和“假值”(如:false、null、undefined、0、-0、NaN和都是假值,其他的值包括对象都是真值),“&”可以对真值和假值进行“与”操作,如果两个操作数都是真值,那么返回一个真值;否则,至少一个操作数是假值的话,则返回一个假值 第三层:“真值”和“假值”到底是什么值呢,“&”首先计算左操作数的值,如果结果是假值,那么整个表达式的结果一定也是假值,因此“&”简单地返回做操作数的值,而并不会对右操作数进行计算;如果左操作数是真值,那么整个表达式的结果则依赖于右操作数的值,
40、如果右操作数是真值,那么整个表达式的值一定是真值;如果是假值,那么整个表达式的值一定是假值,因此“&”将计算右操作数的值并返回作为整个表达式的计算结果,9/11/2023,32,JavaScript运算符,第二章(JavaScript语言),“|”逻辑或运算符规则:首先计算左操作数的值,如果结果为真,那么返回这个真值;否则,计算右操作数的值,并返回这个表达式的计算结果“!”逻辑非运算符规则:首先将操作数转换为布尔值,然后再对布尔值求反,也就是说“!”总是返回true或false,并且我们可以通过使用两次逻辑非运算来得到一个值的等价布尔值,9/11/2023,33,JavaScript运算符,第
41、二章(JavaScript语言),赋值运算符JavaScript使用“=”作为赋值运算符号来给变量或者属性赋值“=”运算符规则:“=”具有非常低的优先级,通常在一个较长的表达式中用到了一条赋值语句的值的时候,需要补充圆括号以保证正确的运算顺序 赋值操作符的结合性是从右至左 i=j=k=0/把三个变量初始化为0加强的赋值运算符,9/11/2023,34,JavaScript运算符,第二章(JavaScript语言),+=:对于x+=y,对应于x=x+y-=:对于x-=y,对应于x=x-y*=:对于x*=y,对应于x=x*y/=:对于x/=y,对应于x=x/y%=:对于x%=y,对应于x=x%y,
42、&=:对于x&=y,对应于x=x&y|=:对于x|=y,对应于x=x|y=:对于x=y,对应于x=xy=:对于x=y,对应于x=xy=:对于x=y,对应于x=xy,其他运算符条件运算符(?:)规则:条件运算符的操作数可以是任意类型,第一个操作数当成布尔值,如果它是真值,那么僵计算第二个操作数,并返回计算结果;否则,如果第一个操作数是假值,那么将计算第三个操作数,并返回其计算结果;第二个和第三个操作数总是会计算其中之一,不可能两者同时执行typeof运算符规则:typeof操作数可以是任意类型,返回值表示操作数类型的一个字符串赋值操作符的结合性是从右至左,9/11/2023,35,JavaScr
43、ipt运算符,第二章(JavaScript语言),其他运算符delete运算符 delete是一元操作符,它用来删除对象属性或者数组元素规则:当删除一个属性时,这个属性将不再存在,而不是仅仅设置了一个undefined的值 如果删除成功,delete将会返回true,然而并不是所有的属性都可删除,一些内置核心和客户端属性是不能删除的,用户通过var语句声明的变量不能删除;通过function语句定义的函数和函数参数也不能删除void运算符 void是一元运算符,它在操作数之前,操作数可以是任意类型,作用是操作数会照常计算,但忽略计算结果并返回undefined逗号运算符(,)逗号运算符是二元运
44、算符,它的操作数可以是任意类型,它首先计算左操作数,然后计算右操作数,最后返回右操作数的值,9/11/2023,36,JavaScript运算符,第二章(JavaScript语言),表达式语句赋值语句greeting=Hello+name;i*=3;delete o.xcounter+;函数调用alert(greeting);windows.close();,9/11/2023,37,JavaScrip语句,第二章(JavaScript语言),复合语句和空语句复合语句将多条语句联合在一起,形成一条复合语句 x=Math.PI;cx=Math.cos(x);console.log(cos(x)=
45、+cx;JavaScript规定每个复合语句可以有一个子语句,可以通过大括号将多个其他语句包含起来组成语句块放入子语句中 语句块的结尾不需要分号,快中的子语句必须分号结束空语句;for(i=0;ia.length;ai+=0);JavaScript解释执行空语句时显然不会执行任何动作;空语句允许包含0个子语句,9/11/2023,38,JavaScrip语句,第二章(JavaScript语言),声明语句var语句var语句用来声明一个或者多个变量语法:var name_1=value_1,.,name_n=value_n规则:如果var语句出现在函数体内,那么它定义的是一个局部变量;如果var
46、语句出现在顶层代码,它声明的是全局变量,无法通过delete删除 如果var语句中的变量没有指定初始值,那么这个变量的值初始为undefined 多次声明同一个变量时可以的Function语句 function用来定义函数 语法:function funcname(arg1,arg2.,argn)statements 规则:function语句里的花括号是必须的 function语句通常出现在JavaScript代码的最顶层,也可嵌套在其他函数体内,但嵌套时函数声明只能出现在所嵌套函数的顶部。function语句创建的变量也是无法删除的,9/11/2023,39,JavaScrip语句,第二章
47、(JavaScript语言),条件语句if语句【2.5/if】语法:if(表达式)子语句 ifelse语句【2.5/errif】语法:if(表达式)子语句 else 子语句,9/11/2023,40,JavaScrip语句,第二章(JavaScript语言),条件语句Ifelse if语句语法:if(表达式)子语句 else if(表达式)子语句./多条else if语句 else/可以省略 子语句,9/11/2023,41,JavaScrip语句,第二章(JavaScript语言),条件语句switch语句【2.5/switch】语法:switch(表达式)case 值1:子语句1 brea
48、k;case 值2:子语句2 break;.case 值n:子语句n break;default:子语句 规则:JavaScript的switch语句中可省略case块后的break语句,如果省略将直接执行后面case块里的代码 JavaScript的switch语句里的条件变量可以是任意类型,9/11/2023,42,JavaScrip语句,第二章(JavaScript语言),循环语句while语句【2.5/while】语法:while(表达式)子语句;do while语句【2.5/doWhile】语法:do 子语句;while(表达式);for语句【2.5/deadFor】语法:for(表
49、达式1;表达式2;表达式3)子语句;,9/11/2023,43,JavaScrip语句,第二章(JavaScript语言),循环语句for/in语句【2.5/fonin2】for in循环实质上是一种foreach循环,它主要有两个作用:遍历数组里的所有数组元素遍历JavaScript对象的所有属性 语法:for(变量 in 对象)子语句;注意:for/in语句并不会遍历对象的所有属性,只有“可枚举”的属性才会遍历到,对于内置方法、内置属性都是不可枚举的,9/11/2023,44,JavaScrip语句,第二章(JavaScript语言),跳转语句break语句单独使用break语句,将立即退
50、出最内层的循环或switch语句【2.5/break】语法:break;规则:只能在循环或switch语句内用break关键字后面跟随一个语句标签,将跳转到这个标签所标识的语句块的结束或直接终止这个闭合语句块的执行【2.5/breaklable】语法:break 标签名;规则:break和标签名之间没有冒号,不能换行 对于一个带标签的函数定义语句来说,不能从函数内部通过这个标签来跳转到函数外部,9/11/2023,45,JavaScrip语句,第二章(JavaScript语言),跳转语句continue语句单独使用continue语句,将转到下一次循环【2.5/continue】语法:cont