第二章--JavaScript_第1页
第二章--JavaScript_第2页
第二章--JavaScript_第3页
第二章--JavaScript_第4页
第二章--JavaScript_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

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

文档简介

1、第第2章章 JavaScript语言语言第二章(JavaScript)12/17/20211l JavaScript简介简介 JavaScript是一种轻量级的、解释性的程序设计语言,而且具备一定面向对象的能力。JavaScript与操作系统无关,它依赖JavaScript的解释引擎。 浏览器通过内嵌JavaScript的解释引擎从而获得了对JavaScript的处理能力。通过在网页中嵌入标签,将JavaScript脚本添加到网页中,使得网页不再是简单的静态HTML,而是包含了控制浏览器的程序、动态创建HTML内容和与用户交互的程序,即动态HTML(DHTML)JavaScript与与Java

2、的区别的区别Java和JavaScript是两个完全不同的产品。Java是SUN公司推出的面向对象的程序设计语言;JavaScript是Netscape公司的产品,目的是为了扩展Netscape浏览器的功能Java是面向对象的程序设计语言,即使开发简单的程序也必须从类定义开始;JavaScript是基于对象的,本身提供了非常丰富的内部对象供设计人员使用Java语言的最小单位是类定义,而JavaScript中则充斥着大量函数Java语言必须经过编译生成字节码,然后由Java虚拟机运行这些字节码;JavaScript是一种脚本语言,其源代码无须经过编译,由浏览器解释执行12/17/20212Jav

3、aScript简介简介第二章(JavaScript语言)l JavaScript简介简介Java采用强类型变量,所有变量必须先声明后使用;JavaScript采用弱类型变量,变量使用前无须声明,而由解释器在运行时检查其数据类型Java代码是一种与HTML无关的格式,必须通过HTML中引用外媒体方式进行装载,其代码以字节码的形式保存在独立的文档中;JavaScript的代码是一种文本字符格式,可以直接嵌入HTML文档中,并且可动态装载JavaScript的版本的版本 JavaScript是由网景(Netscape)公司创建,标准版本的名字叫做ECMAScript,目前ECMAScript第3版已

4、经被所有浏览器完整地实现了。ECMAScript第5版浏览器也已经开始实现它了,有时我们也会看到JavaScript的版本号(比如JavaScript1.5或JavaScript1.8)这些是Mozilla的版本号,1.5版本基本上就是ECMAScript3,后续版本包含了非标准的语言扩展12/17/20213JavaScript简介简介第二章(JavaScript语言)l 运行运行JavaScript(1)使用javascript:前缀构建执行JavaScript代码的URL 在设置URL的地方都可以使用这种以javascript:作为前缀的URL,在用户激发该URL时,javascript

5、:之后的JavaScript代码就会获得执行(2)使用元素来包含JavaScript代码【2.1run】 如果页面里需要包含大量JavaScript代码,则建议将这些JavaScript脚本放在标签和之间,元素既可作为子元素,也可作为子元素(3)导入JavaScript文件【2.1test】 为了让HTML页面和JavaScript脚本更好地分离,我们可以将JavaScript脚本单独保存在一个*.js文件中,HTML页面导入该*.js文件即可。 12/17/20214JavaScript简介简介第二章(JavaScript语言)lJavaScript基本数据类型基本数据类型 JavaScri

6、pt的基本数据类型有5种:数值类型:包含整数和浮点数布尔类型:只有true和false两种值字符串类型:字符串变量必须以引号括起来,引号可以是单引号,也可以使双引号undefined类型:专门用来确定一个已经创建但是没有初值的变量null:用于表明某个变量的值为空除此之外,除此之外,JavaScript还支持复合数据类型:对象、数组、函数、以及一些对象类。还支持复合数据类型:对象、数组、函数、以及一些对象类。数值类型数值类型【2.2simpleNumber2】JavaScript并不区分整型数值和浮点数值,所有的数字都是由浮点型表示的。JavaScript采用IEEE754标准定义的64位浮点

7、格式来表示数字,所能表示的最大值为:1.797693134862315710303,最小值是510-324。JavaScript中的数值形式可以非常丰富,完全支持科学计数法表示。语法格式: 数字数字1 E 数字数字2 12/17/20215JavaScript数据类型数据类型第二章(JavaScript语言)lJavaScript基本数据类型基本数据类型数值类型数值类型如果数值只有小数部分,则可以省略整数部分的0,但小数点不能省略【2.2simpleNumber2】 e=.24e-2;数值直接量不要以0开始,因为JavaScript不仅支持十进制数,还支持其他进制的数,八进制和十六进制数都以0

8、开始【2.2octal】 a=0 x13;/十六进制十六进制 b=014;/八进制八进制当数值变量的值超出了其表值范围时,将出现两个特殊值:Infinity(无穷大)和-Infinity(负无穷大);Infinity、-Infinity与其他数值进行算术运算时,整个算术表达式将变成另一个特殊值:NaN;但Infinity和-Infinity都可以执行比较运算,即Infinity等于Infinity,而-Infinity等于-Infinity【2.2infinity】JavaScript中的算术运算允许除数为0,当除数和被除数同时为零,得到结果是NaN,正数除零的结果就是Infinity,负数除

9、零的结果就是-InfinityNaN如果在算术表示中,整个算术表达式的值为NaN;NaN不会与任何数值变量相等,也就是NaN=NaN也返回false;JavaScript提供isNaN()函数来判断某个变量是否为NaN【2.2judgeNan】12/17/20216JavaScript数据类型数据类型第二章(JavaScript语言)lJavaScript基本数据类型基本数据类型字符串类型字符串类型字符串(string)是由单引号或者双引号括起来的Unicode字符序列,其中可以含有0个或多个字符。与C、C+或Java不同的是,JavaScript并没有char这种单个字符的数据类型,所以要表

10、示单个字符,只能用长度为1的字符串来代替。JavaScript的字符串类型必须以引号括起来,此处的引号既可以是单引号也可以是双引号 a=Hello JavaScript b=Hello JavaScriptJavaScript中比较两个字符串的字符序列是否相等使用=即可,无须使用equals()方法12/17/20217JavaScript数据类型数据类型第二章(JavaScript语言)lJavaScript基本数据类型基本数据类型字符串类型字符串类型JavaScript操作字符串的方法:【2.2StringMethod】charAt():获取字符串特定索引处的字符charCodeAt():

11、返回字符串中特定索引处的字符对应的Unicode值length:直接返回字符串的长度。JavaScript中的中文字符算一个字符toUpperCase():将字符串的所有字母转换成大写字母toLowerCase():将字符串的所有字符转换成小写字母fromCharCode():将系列Unicode值转换成字符串indexOf():返回字符串中特定字符串第一次出现的位置lastIndexOf():返回字符串中特定字符串最后一次出现的位置substring():返回字符串的某个子串slice():返回字符串的某个子串,支持负数参数match():使用正则表达式搜索目标子字符串search():使用

12、正则表达式搜索目标子字符串concat():用于将多个字符串拼接成一个字符串split():将某个字符串分割成多个字符串,可以指定分隔符replace():将字符串中某个子串以特定字符串替代12/17/20218JavaScript数据类型数据类型第二章(JavaScript语言)lJavaScript基本数据类型基本数据类型Undefined和和null类型类型【2.2undefined】 undefined类型的值只有undefined一个,该值用于表示某个变量不存在,或者没有为其分配值,也用于表示对象的属性不存在; null用于表示变量的值为空undefined和和null的区别:的区别

13、: undefined表示没有为变量设置值,null表示将变量值设为空注意:很多时候注意:很多时候undefined和和null本身就相等,即本身就相等,即null=undefined将返回将返回true;如果;如果我们要精确区分我们要精确区分null和和undefined应该考虑使用精确等于符(应该考虑使用精确等于符(=)12/17/20219JavaScript数据类型数据类型第二章(JavaScript语言)lJavaScript复合数据类型复合数据类型 复合类型是由多个基本数据类型(也可以包含复合类型)组成的数据体。复合类型是由多个基本数据类型(也可以包含复合类型)组成的数据体。对象(

14、对象(Object)对象是一系列命名变量和函数的集合。其中命名变量的类型可以是基本数据类型,也可以是复合类型;对象中的命名变量称为属性,而对象中的函数称为方法;对象访问属性和函数的方法都是通过“.”来进行JavaScript提供了大量的内置对象和内置类,同时也允许用户自定义对象和类;JavaScript常用的内置类:常用的内置类:12/17/202110JavaScript数据类型数据类型第二章(JavaScript语言)类名类名说明说明类名类名说明说明Array数组类Date日期类Error错误类Function函数类Math数学类,包含执行数学运算的方法Number数值类Object对象类

15、String字符串类数组(数组(Array)【2.2arr】数组是一系列的变量。与其他语言不同的是,JavaScript的数组中元素的类型可以不同JavaScript数组的三个特征:数组的三个特征:u数组的长度可变u同一个数组里数组元素的类型可以互不相同u访问数组元素时不会产生数组越界,访问并未赋值的数组元素时,该元素的值为undefined函数(函数(Function)【2.2simpleFunction】函数可以是包含一段可执行性代码,也可以接收调用者传入的参数。JavaScript函数的四个特征:函数的四个特征:u无须声明返回值类型u无须声明形参类型u可以独立存在,无须属于任何类u必须使

16、用function关键字定义12/17/202111JavaScript数据类型数据类型第二章(JavaScript语言)全局对象全局对象【2.2this】全局对象是预定义的对象,作为 JavaScript 的全局函数和全局属性的占位符。通过使用全局对象,可以访问所有其他所有预定义的对象、函数和属性。全局对象不是任何对象的属性,所以它没有名称。全局对象的特征:全局对象的特征:u全局对象只是一个对象,而不是类。既没有构造函数,也无法实例化一个新的全局对象。u全局对象不是任何对象的属性,所以它没有名称。u全局对象是预定义的对象,作为 JavaScript 的全局函数和全局属性的占位符。u在顶层 J

17、avaScript 代码中,可以用关键字 this 引用全局对象。u全局对象是作用域链的头,意味着在顶层 JavaScript 中声明的所有变量都将成为全局对象的属性。u通常不必用 this 引用全局对象,因为所有非限定性的变量和函数名都会作为全局对象的属性来查询。u通过使用全局对象,可以访问所有其他预定义的对象、函数和属性。u全局对象的预定义属性都是不可枚举的,所以可以用 for/in 循环列出所有隐式或显式声明的全局变量。全局属性:全局属性:NaN,Infinity,undefined全局函数:全局函数:eval,parseInt,parseFloat,isNaN,isFinite,dec

18、odeURI,encodedURI,encodeURIComponent全局构造函数:全局构造函数:Object,Function,Array,String,Boolean,Number,Date,RegExp,Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError其他属性的全局对象:其他属性的全局对象:Math,JSON12/17/202112JavaScript数据类型数据类型第二章(JavaScript语言)包装对象包装对象【2.2bz】var s=http:/;var addr=s.sbustri

19、ng(s.indexOf(:)+2,s.length);JavaScript中不仅提供了数值类型、字符串类型和布尔类型,它同时还提供了数值类、字符串类和布尔类,这些类奖对应的原始数据类型包装了起来,它不但拥有其原始数据值,而且还定义了属性和操作值的方法。当你访问一个字符串的属性或方法时,JavaScript内部会自动创建其包装对象。这个字符串包装对象将替换原始字符串值,它拥有已定义的属性和方法只有当字符串以对象的方式使用时,它的对象才会被创建,并且这个对象时临时性的,在访问了它的属性或方法之后,即不再被使用,它将被系统所回收。这种临时性对象我们称为包装对象包装对象。我们也可以通过String(

20、),Number()或Boolean()构造函数来显示创建包装对象注意:注意:=将原始值和其包装对象视为相等,但将原始值和其包装对象视为相等,但=将它们视为不等,通过将它们视为不等,通过typeof运算符运算符可以看到原始值和其包装对象的不通。可以看到原始值和其包装对象的不通。12/17/202113JavaScript数据类型数据类型第二章(JavaScript语言)原始值和对象原始值和对象【2.2ysz】JavaScript中的原始值(undefined、null、布尔值、数字和字符串)与对象、函数和数组有着根本区别。原始值是不可更改的,而对象是可变的。原始值是不可更改的,而对象是可变的。

21、原始值的比较是值的比较,其中对于字符串来将如果两个单独的字符串,当它们的长度相等且每个索引的字符都相等时,JavaScript认为它们相等对象的比较并非值得比较,即使两个对象包含同样的属性及相同的值,它们也是不相等的,各个索引元素完全相等的两个数组也不相等,只有当它们引用同一个基对象时,它们才相等。12/17/202114JavaScript数据类型数据类型第二章(JavaScript语言)类型转换类型转换【2.2ysz】转换成布尔值转换成布尔值 方法:(1)使用! var o =23; alert(!o);/转换成字符串,结果是true (2)使用Boolean() var o = new

22、Boolean(23);alert(o);/转换成字符串,结果是falseu1、数字转换成布尔值、数字转换成布尔值除了除了0被转换成被转换成false外,所有自他数字都会被转换成外,所有自他数字都会被转换成true, NaN 也总是被转换成也总是被转换成falseu2、字符串转换成布尔值、字符串转换成布尔值除了空字符串被转换成除了空字符串被转换成false外,所有字符串都会被转换成外,所有字符串都会被转换成true12/17/202115JavaScript数据类型数据类型第二章(JavaScript语言)u3、其他类型转换成布尔值、其他类型转换成布尔值undefined和和null会被转换成

23、会被转换成false, 任何对象任何对象(包括数组包括数组)和函数都会被转换成和函数都会被转换成true转换成字符串值转换成字符串值 方法:(1)使用一个字符串与之相加 10+3; (2)使用String() String(22);u1、数字转换成字符串、数字转换成字符串数字都是按原样转换成字符串,但用科学计数法表示的数字数字都是按原样转换成字符串,但用科学计数法表示的数字(也就是带也就是带e的的)会转换成它内部代表的真实会转换成它内部代表的真实的数字的字符串的数字的字符串当当null与数字相加时,不会进行字符串连接,而是会把与数字相加时,不会进行字符串连接,而是会把null转换成转换成0来进

24、行数学元素来进行数学元素对于对于任意数组,将会转为任意数组,将会转为;对于;对于9(1个数字元素)将会转为个数字元素)将会转为9;12/17/202116JavaScript数据类型数据类型第二章(JavaScript语言)u2、其他类型转换成字符串、其他类型转换成字符串对于对于任意数组,将会转为任意数组,将会转为;对于;对于9(1个数字元素)将会转为个数字元素)将会转为9;当对象、数组或函数转换成字符串时,会调用它们的当对象、数组或函数转换成字符串时,会调用它们的 toString() 方法来进行转换;方法来进行转换;数组类的数组类的toString()方法将每个数组元素转换为一个字符串,并

25、在元素之间添加逗号后合并成结果字符方法将每个数组元素转换为一个字符串,并在元素之间添加逗号后合并成结果字符串串函数类的函数类的toString()方法返回这个函数的实现定义的表示方式,通常是将用户定义的函数转换为方法返回这个函数的实现定义的表示方式,通常是将用户定义的函数转换为JavaScript源代码字符串源代码字符串日期类的日期类的toString方法返回了一个可读的日期和时间字符串方法返回了一个可读的日期和时间字符串 正则表达式类的正则表达式类的toString()方法将正则表达式对象转换为表示正则表达式直接量的字符串方法将正则表达式对象转换为表示正则表达式直接量的字符串除了除了toSt

26、ring()方法外,还有一个转换对象的函数方法外,还有一个转换对象的函数valueOf(),如果存在任意原始值,它就默认将对象转如果存在任意原始值,它就默认将对象转换为表示它的原始值,而对象是复合值,默认将简单的返回对象本身,而不是返回一个原始值;日换为表示它的原始值,而对象是复合值,默认将简单的返回对象本身,而不是返回一个原始值;日期类会返回它的一个内部表示:期类会返回它的一个内部表示:1970年年1月月1日以来的毫秒数日以来的毫秒数12/17/202117JavaScript数据类型数据类型第二章(JavaScript语言)u2、其他类型转换成字符串、其他类型转换成字符串JavaScrip

27、t中对象到字符串的转换经过如下步骤:中对象到字符串的转换经过如下步骤:如果对象具有如果对象具有toString()方法,则调用这个方法。如果它返回一个原始值,方法,则调用这个方法。如果它返回一个原始值,JavaScript将这个值转换将这个值转换为字符串(如果本身不是字符串的话),并返回这个字符串结果。为字符串(如果本身不是字符串的话),并返回这个字符串结果。如果对象没有如果对象没有toString()方法,或者这个方法并不返回一个原始值,那么方法,或者这个方法并不返回一个原始值,那么JavaScript会调用会调用valueOf()方法。如果存在这个方法,则方法。如果存在这个方法,则Java

28、Script调用它。如果返回值是原始值,调用它。如果返回值是原始值,JavaScript将这个值转换为将这个值转换为字符串,并返回这个字符串结果字符串,并返回这个字符串结果否则,否则,JavaScript无法从无法从toString()或或valueOf()获得一个原始值,因此这时它将抛出一个类型错误获得一个原始值,因此这时它将抛出一个类型错误异常异常12/17/202118JavaScript数据类型数据类型第二章(JavaScript语言)转换成数字值转换成数字值 方法:(1)使用一个一元的加号运算符,这是最快的方法 +x (2)加号以外的其他数学运算符 x-0 或或 x*1 (3)使用N

29、umber()构造函数进行转换 Number(x)1、字符串转换成数字、字符串转换成数字除了空字符串会被转换成除了空字符串会被转换成0以外,如果字符串中是正确的数字书写形式,那么都可以顺利转换成相应的以外,如果字符串中是正确的数字书写形式,那么都可以顺利转换成相应的数字,不管是小数、科学计数还是八进制、十六进制形式等。但是如果参杂了其他不能构成数字或数字,不管是小数、科学计数还是八进制、十六进制形式等。但是如果参杂了其他不能构成数字或不符合数字书写规则的东西,则会被转换成不符合数字书写规则的东西,则会被转换成NaN。NaN是指不是数字的意思,任何数字数字跟是指不是数字的意思,任何数字数字跟Na

30、N进行运算得到的结果都是进行运算得到的结果都是NaN,NaN甚至跟自己也不相甚至跟自己也不相等。等。12/17/202119JavaScript数据类型数据类型第二章(JavaScript语言)2、其它类型转换成数字、其它类型转换成数字对象和函数总是被转换成对象和函数总是被转换成NaN, undefined也会被转换成也会被转换成NaN, 但但null会被转换成会被转换成0数组会首先被转换成字符串,然后再转换成数字。数组会首先被转换成字符串,然后再转换成数字。JavaScript中对象到数字的转换经过如下步骤:中对象到数字的转换经过如下步骤:如果对象具有如果对象具有valueOf()方法,后者

31、返回一个原始值,则方法,后者返回一个原始值,则JavaScript将这个原始值转换为数字(如果将这个原始值转换为数字(如果需要的话)并返回这个数字需要的话)并返回这个数字否则,如果对象具有否则,如果对象具有toString()方法,后者返回一个原始值,则方法,后者返回一个原始值,则JavaScript将其转换并返回将其转换并返回否则,否则,JavaScript抛出一个类型错误异常抛出一个类型错误异常12/17/202120JavaScript数据类型数据类型第二章(JavaScript语言)l变量声明变量声明 在JavaScript程序中,使用一个变量之前应当先声明。变量是使用关键字var来声

32、明的。 var i; var i,sum; var message=hello; 如果未在var声明语句中给变量指定初始值,那么虽然声明了这个变量,但在给它存入一个值之前,它的初始值就是undefined。 JavaScript的变量可以在程序中被先后赋予不同数据类型的值l变量的作用域变量的作用域 变量按照作用域的不同,一般分为全局变量和局部变量。 全局变量拥有全局作用域,在JavaScript代码中的任何地方都是有定义的;局部变量,作用域是局部性的;在函数内声明的变量只在函数体内有定义,是局部变量;函数的参数也是局部变量;【2.3scope_test】12/17/202121JavaScri

33、pt变量变量第二章(JavaScript语言)l变量的作用域变量的作用域在函数体内,局部变量的优先级高于同名的全局变量。如果在函数体内声明的一个局部变量或者函数参数中带有的变量和全局变量重名,那么全局变量就被局部变量所遮盖【2.3noBlockScope】var scope=global;function checkscope() var scope=local; document.write(scope);全局变量编写代码时可以不写var,但声明局部变量时则必须使用varscope=global;function checkscope() scope=local; document.writ

34、e(scope);变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有意义的。这意味着变量在声明之前甚至已经可用【2.3noBlockScope2】var scope=global;function checkscope() document.write(scope); var scope=local; document.write(scope); 12/17/202122JavaScript变量变量第二章(JavaScript语言)l算术运算符算术运算符JavaScript的算术运算符主要有:1加法运算符(+)2减法运算符(-)3乘法运算符(*)4除法运算符(/)5模运算(%)6递增

35、运算符(+)7递减运算符(-)“+”运算符运算符规则:规则:优先考虑字符串连接 如果其中一个操作数是字符串或转换为字符串的对象,另外一个操作数将会转为字符串,加法将进行字符串的连接操作; 如果两个操作数都不是字符串,那么都将进行算术加法运算 当加号运算符和字符串和数字一起使用时,运算结果将依赖于运算符的运算顺序12/17/202123JavaScript运算符运算符第二章(JavaScript语言)“+”运算符运算符举例:举例:12/17/202124JavaScript运算符运算符第二章(JavaScript语言)“+”和和“-”运算符运算符规则:规则:“+”“-”运算符从不进行字符串连接操

36、作,它总是会将操作数转换为数字并加1或减1 不能再后增量运算符和操作数之间插入换行符,如果插入了换行符,JavaScript将会把操作数当做一条单独的语句,并在其之前补上一个分号举例:举例:x=x+1和+x并不一定相等 如果x为“1”,那么x=x+1的结果就是“11”,而+x的结果是2“/”和和“%”运算符运算符规则:规则:当一个整数除以另一个整数时,得到的结果将是浮点型 当除数为0的运算结果为正无穷大或负无穷大,0/0的结果是NaN,所有这些运算均不会报错 求模操作的结果符号和第一个操作数的符号保持一致 求模操作也适用于浮点数举例:举例:5/2 /=2.5而不是2 -5%2 /=-1 6.5

37、%2 /=0.212/17/202125JavaScript运算符运算符第二章(JavaScript语言)l位运算符位运算符JavaScript的位运算符主要有:&:按位与|:按位或:按位非:按位异或:右位移:无符号右移12/17/202126JavaScript运算符运算符第二章(JavaScript语言)规则:规则:位运算要求它的操作数是整数 位运算会将NaN、Infinity和-Infinity转换为0 按位与,只有两个操作数中相对应的位都是1,结果中的这一位才是1 按位或,如果其中一个操作数相应的位为1,或者两个操作数相应位都是1,那么结果中的这一位就为1 按位异或,如果两个操

38、作数中只有一个相应位为1,那么结果中的这一位就是1 按位非,将操作数的所有位取反 左移,将第一个操作数的所有二进制位进行左移,移动的位数由第二个操作数指定,新的一位用0补充 右移,将第一个操作数的所有二进制位进行右移,移动的位数由第二个操作数指定,如果第一个操作数是正数,移位后用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

39、71 =3 -71 =-4 -14=0 x0FFFFFFF12/17/202127JavaScript运算符运算符第二章(JavaScript语言)l比较运算符比较运算符JavaScript的比较运算符主要有:大于=:大于等于:小于=:小于等于!=:不等于=:等于!=:严格不等于=:严格等于“=”严格相等运算符严格相等运算符规则:规则:“=”首先计算其操作数的值,然后比较这两个值,比较过程没有任何类型转换首先计算其操作数的值,然后比较这两个值,比较过程没有任何类型转换 如果两个值类型不相同,则它们不相等 如果两个值都是null或者都是undefined,则它们不相等 如果两个值都是布尔值真或假

40、,则它们不相等12/17/202128JavaScript运算符运算符第二章(JavaScript语言)“=”严格相等运算符严格相等运算符规则:规则:如果其中一个值是NaN,或者两个值都是NaN,则它们不相等 如果两个值为数字且数值相等,则它们相等 如果一个值为0,另一个值为-0,则它们相等 如果两个值为字符串,且所含的对应位上的16位数完全相等,则它们相等 如果它们的长度或内容不同,则它们不等 如果两个引用值指向同一个对象、数组或函数,则它们相等“=”相等运算符相等运算符规则:规则:如果两个操作数不是同一类型,首先会尝试进行一些类型转换,然后进行比较如果两个操作数不是同一类型,首先会尝试进行

41、一些类型转换,然后进行比较 如果两个操作数类型不同,如果两个操作数类型不同,“=” 也可能会认为它们相等,检测相等将会遵守如下也可能会认为它们相等,检测相等将会遵守如下规则和类型转换:规则和类型转换: 如果一个值是null,另一个是undefined,则它们相等 如果一个值是数字,另一个是字符串,先将字符串转换为数字,然后使用转换后的值进行比较 如果一个值true,则将其转换为1再进行比较;如果一个值false,则将其转换为0再进行比较12/17/202129JavaScript运算符运算符第二章(JavaScript语言)“=”相等运算符相等运算符规则:规则:如果一个值是对象,另一个值是数字

42、或字符串,则先将对象转换为原始值,然后再进行比较 其他不同类型之间的比较均不相等()、()、(=)规则:规则:如果两个操作数是对象,先转换为原始值; 在对象转换为原始值后,如果两个操作数都是字符串,那么将按照该字符串的16位Unicode字符的索引顺序进行比较 在对象转换为原始值后,如果至少有一个操作数不是字符串,那么两个操作数都将转换为数字进行数值比较 Infinity比其他任何数字都大,-Infinity比其他任何数字都小,如果其中一个操作数是NaN,那么比较操作符总返回false12/17/202130JavaScript运算符运算符第二章(JavaScript语言)in运算符运算符规则

43、:规则:in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象 如果右侧对象拥有一个名为左操作数值的属性名,那么返回trueinstanceof运算符运算符规则:规则:instanceof运算符希望左操作数是一个对象,右操作数标识对象的类 如果左侧的对象是右侧的实例,则返回true12/17/202131JavaScript运算符运算符第二章(JavaScript语言)l逻辑运算符逻辑运算符JavaScript的逻辑运算符主要有:逻辑与(&)逻辑或(|)逻辑非(!)“&”逻辑与运算符逻辑与运算符三层理解:三层理解:第一层:当操作数都是布尔值的时候,

44、“&”对两个值执行“与”操作,只有在第一个操作数和第二个操作数都是true的时候,它才返回true;如果其中一个操作数是false,它返回false 第二层:当操作数不一定是布尔值的时候,有些值可以当做“真值”和“假值”(如:false、null、undefined、0、-0、NaN和都是假值,其他的值包括对象都是真值),“&”可以对真值和假值进行“与”操作,如果两个操作数都是真值,那么返回一个真值;否则,至少一个操作数是假值的话,则返回一个假值 第三层:“真值”和“假值”到底是什么值呢,“&”首先计算左操作数的值,如果结果是假值,那么整个表达式的结果一定也是假值,因此

45、“&”简单地返回做操作数的值,而并不会对右操作数进行计算;如果左操作数是真值,那么整个表达式的结果则依赖于右操作数的值,如果右操作数是真值,那么整个表达式的值一定是真值;如果是假值,那么整个表达式的值一定是假值,因此“&”将计算右操作数的值并返回作为整个表达式的计算结果12/17/202132JavaScript运算符运算符第二章(JavaScript语言)“|”逻辑或运算符逻辑或运算符规则:规则:首先计算左操作数的值,如果结果为真,那么返回这个真值;否则,计算右操作数的值,并返回这个表达式的计算结果“!”逻辑非运算符逻辑非运算符规则:规则:首先将操作数转换为布尔值,然后再对布

46、尔值求反,也就是说“!”总是返回true或false,并且我们可以通过使用两次逻辑非运算来得到一个值的等价布尔值12/17/202133JavaScript运算符运算符第二章(JavaScript语言)l赋值运算符赋值运算符JavaScript使用“=”作为赋值运算符号来给变量或者属性赋值“=”运算符运算符规则:规则:“=”具有非常低的优先级,通常在一个较长的表达式中用到了一条赋值语句的值的时候,需要补充圆括号以保证正确的运算顺序 赋值操作符的结合性是从右至左 i=j=k=0 /把三个变量初始化为0加强的赋值运算符加强的赋值运算符12/17/202134JavaScript运算符运算符第二章(

47、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&=:对于x&=y,对应于x=x&y|=:对于x|=y,对应于x=x|y=:对于x=y,对应于x=xy=:对于x=y,对应于x=x=:对于x=y,对应于x=xy=:对于x=y,对应于x=xyl其他运算符其他运算符条件运算符(条件运算符(?:)规则:规则:条件运算符的操作数可以是任意类型,第一个操作数当成布尔值,如果它是真值,那么僵计算第二个操作数,并返回计算结果;否则

48、,如果第一个操作数是假值,那么将计算第三个操作数,并返回其计算结果;第二个和第三个操作数总是会计算其中之一,不可能两者同时执行typeof运算符运算符规则:规则:typeof操作数可以是任意类型,返回值表示操作数类型的一个字符串赋值操作符的结合性是从右至左12/17/202135JavaScript运算符运算符第二章(JavaScript语言)l其他运算符其他运算符delete运算符运算符 delete是一元操作符,它用来删除对象属性或者数组元素规则:规则:当删除一个属性时,这个属性将不再存在,而不是仅仅设置了一个undefined的值 如果删除成功,delete将会返回true,然而并不是所

49、有的属性都可删除,一些内置核心和客户端属性是不能删除的,用户通过var语句声明的变量不能删除;通过function语句定义的函数和函数参数也不能删除void运算符运算符 void是一元运算符,它在操作数之前,操作数可以是任意类型,作用是操作数会照常计算,但忽略计算结果并返回undefined逗号运算符(,)逗号运算符(,) 逗号运算符是二元运算符,它的操作数可以是任意类型,它首先计算左操作数,然后计算右操作数,最后返回右操作数的值12/17/202136JavaScript运算符运算符第二章(JavaScript语言)l表达式语句表达式语句赋值语句赋值语句greeting=Hello+name

50、;i *=3;delete o.xcounter+;函数调用函数调用alert(greeting);windows.close();12/17/202137JavaScrip语句语句第二章(JavaScript语言)l复合语句和空语句复合语句和空语句复合语句复合语句将多条语句联合在一起,形成一条复合语句将多条语句联合在一起,形成一条复合语句 x=Math.PI; cx=Math.cos(x); console.log(cos(x)=+cx; JavaScript规定每个复合语句可以有一个子语句,可以通过大括号将多个其他语句包规定每个复合语句可以有一个子语句,可以通过大括号将多个其他语句包含起来

51、组成语句块放入子语句中含起来组成语句块放入子语句中 语句块的结尾不需要分号,快中的子语句必须分号结束语句块的结尾不需要分号,快中的子语句必须分号结束空语句空语句;for(i=0;ia.length;ai+=0);JavaScript解释执行空语句时显然不会执行任何动作;解释执行空语句时显然不会执行任何动作;空语句允许包含空语句允许包含0个子语句个子语句12/17/202138JavaScrip语句语句第二章(JavaScript语言)l声明语句声明语句var语句语句var语句用来声明一个或者多个变量语法:语法:var name_1 =value_1,.,name_n =value_n规则:规则

52、:如果var语句出现在函数体内,那么它定义的是一个局部变量;如果var语句出现在顶层代码,它声明的是全局变量,无法通过delete删除 如果var语句中的变量没有指定初始值,那么这个变量的值初始为undefined 多次声明同一个变量时可以的Function语句语句 function用来定义函数 语法:语法:function funcname(arg1,arg2.,argn) statements 规则:规则:function语句里的花括号是必须的 function语句通常出现在JavaScript代码的最顶层,也可嵌套在其他函数体内,但嵌套时函数声明只能出现在所嵌套函数的顶部。 functi

53、on语句创建的变量也是无法删除的12/17/202139JavaScrip语句语句第二章(JavaScript语言)l条件语句条件语句if语句语句【2.5/if】语法:语法:if(表达式)(表达式) 子语句子语句 ifelse语句语句【2.5/errif】语法:语法:if(表达式)(表达式) 子语句子语句 else 子语句子语句 12/17/202140JavaScrip语句语句第二章(JavaScript语言)l条件语句条件语句Ifelse if语句语句语法:语法:if(表达式)(表达式) 子语句子语句 else if(表达式)(表达式) 子语句子语句 ./多条多条else if语句语句 e

54、lse /可以省略可以省略 子语句子语句 12/17/202141JavaScrip语句语句第二章(JavaScript语言)l条件语句条件语句switch语句语句【2.5/switch】 语法:语法:switch(表达式)(表达式) case 值值1:子语句:子语句1 break; case 值值2:子语句:子语句2 break; . case 值值n:子语句:子语句n break; default:子语句子语句 规则:规则:JavaScript的switch语句中可省略case块后的break语句,如果省略将直接执行后面case块里的代码 JavaScript的switch语句里的条件变量

55、可以是任意类型12/17/202142JavaScrip语句语句第二章(JavaScript语言)l循环语句循环语句while语句语句【2.5/while】 语法:语法:while(表达式)(表达式) 子语句;子语句; do while语句语句【2.5/doWhile】 语法:语法:do 子语句;子语句; while(表达式);(表达式);for语句语句【2.5/deadFor】 语法:语法:for(表达式(表达式1;表达式;表达式2;表达式;表达式3) 子语句;子语句; 12/17/202143JavaScrip语句语句第二章(JavaScript语言)l循环语句循环语句for/in语句语句

56、【2.5/fonin2】 for in循环实质上是一种foreach循环,它主要有两个作用:遍历数组里的所有数组元素遍历JavaScript对象的所有属性 语法:语法:for(变量变量 in 对象)对象) 子语句;子语句; 注意:注意:for/in语句并不会遍历对象的所有属性,只有语句并不会遍历对象的所有属性,只有“可枚举可枚举”的属性才会遍历到,的属性才会遍历到,对于内置方法、内置属性都是不可枚举的对于内置方法、内置属性都是不可枚举的12/17/202144JavaScrip语句语句第二章(JavaScript语言)l跳转语句跳转语句break语句语句单独使用break语句,将立即退出最内层

57、的循环或switch语句【2.5/break】 语法:语法:break; 规则:规则:只能在循环或switch语句内用break关键字后面跟随一个语句标签,将跳转到这个标签所标识的语句块的结束或直接终止这个闭合语句块的执行【2.5/breaklable】语法:语法:break 标签名;标签名;规则:规则:break和标签名之间没有冒号,不能换行 对于一个带标签的函数定义语句来说,不能从函数内部通过这个标签来跳转到函数外部12/17/202145JavaScrip语句语句第二章(JavaScript语言)l跳转语句跳转语句continue语句语句单独使用continue语句,将转到下一次循环【2

58、.5/continue】 语法:语法:continue; 规则:规则:只能在循环体内使用 continue在不同的循环中行为区别:在while循环中,在循环开始处指定的表达式会重复检测,如果为true,循环体会从头开始执行在do.while循环中,程序的执行直接跳到循环结尾处,这时会重新判断循环条件,之后才会继续下一次循环在for循环中,首先计算自增表达式,然后再次检测终止条件,用以判断是否执行循环体在for/in循环中,循环开始遍历下一个属性,然后将这个属性名赋值指定变量continue带标签,将终止当前循环,而跳到标签所在循环处开始下一次循环【2.5/continuelable】语法:语法

59、:continue 标签名;标签名;规则:规则:只能在循环体内使用 continue和标签名之间不能有空格12/17/202146JavaScrip语句语句第二章(JavaScript语言)l跳转语句跳转语句return语句语句【2.5/return】 语法:语法:return 返回值;返回值; 规则:规则:return语句只能在函数体内出现,当执行到return语句时函数终止执行 return语句单独使用可不带返回值,这样函数会返回undefined结果throw语句语句【2.5/throw】 语法:语法:return 返回值;返回值; 规则:规则:return语句只能在函数体内出现,当执行

60、到return语句时函数终止执行 return语句单独使用可不带返回值,这样函数会返回undefined结果12/17/202147JavaScrip语句语句第二章(JavaScript语言)l跳转语句跳转语句异常处理语句异常处理语句【2.5/throwCatch】 语法:语法:try 子语句子语句catch(e) 子语句子语句finally 子语句子语句; 规则:规则:JavaScript中只有一个异常类Error,无须在定义函数时声明抛出该异常,所以没有throws关键字 JavaScript中catch语句后括号里的异常实例无须声明类型 JavaScript只有一个异常类,所以try块后最多只能有一个catch块 获取异常的描述信息是通过异常对象的message属性12/1

温馨提示

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

评论

0/150

提交评论