收藏 分销(赏)

JavaScript程序设计教程 第2章 JavaScript基本语法.pdf

上传人:曲**** 文档编号:231346 上传时间:2023-03-21 格式:PDF 页数:118 大小:3.09MB
下载 相关 举报
JavaScript程序设计教程 第2章 JavaScript基本语法.pdf_第1页
第1页 / 共118页
JavaScript程序设计教程 第2章 JavaScript基本语法.pdf_第2页
第2页 / 共118页
JavaScript程序设计教程 第2章 JavaScript基本语法.pdf_第3页
第3页 / 共118页
JavaScript程序设计教程 第2章 JavaScript基本语法.pdf_第4页
第4页 / 共118页
JavaScript程序设计教程 第2章 JavaScript基本语法.pdf_第5页
第5页 / 共118页
点击查看更多>>
资源描述

1、O第2章JavaScript基本语法OOOO2.1JavaScr ipt在HTML中的使用2.2JavaScr i pt代码调试方式2.3语句OO2.4变量Oo2.5数据类型oo 2.6表达式和运算符OO2.7关键字及保留字OO2.8正则表达式O2.9注释 2.10实战 2.11小结o简单了解一下HTML的常见标签,为后面各章节JavaScript 的学习做好准备。HTML常用标签及属性如表2.1所示。表2.1 HTML常用标签及属性标签/属性释义html描述网页head描述网页头部script存放JavaScript脚本body网页可见页面内容hl.h6实面内容标题a链接标签,定义锚src规

2、定外部脚本文件的URLtitle网页标题oQ2.1 JavaScr ipt 在 HTML 中的使用JavaScript在HTML中有两种存放方式:直接在页面上嵌 入JavaScript彳弋码、引用独立的js文件。1.直接在页面上嵌入JavaScript代码OOOOOQvtitle在HTML中使用JavaScriptalert(Hello World!1);脚本2.1.htmloQ在上面的代码中,将JavaScript脚本直接放在HTML的 标签之间,保存为HTML文件,运行HTML文件,弹出一个对话框,如图2.1所示。此网页显示:XHello World1确定图2.1弹出对话框o2.引用独立的

3、js文件示例代码如脚本2-2所示。(1)先创建HTML文件。ooooooQ在HTML中使用JavaScript脚本22.htmlo(2)紧接着我们需要创建一个JavaScript文件test-01,js?,示例代码如下所示。oootest-01,jsalert(J Hello W orld!);(3)运行HTML代码,结果如图2.2所示。此网页显示:XHello World?确定Q图2.2运行结果o 2.2JavaScr i pt代码调试方式使用alert()弹出警告框,示例代码如脚本2-5所示。oooooQvt-e在JavaScript中使用警告 框 v/titlealert(5+6);脚本

4、25.html运行上面HTML代码,浏览器显示结果如图2.5所示。此网页显示:X11确定图2.5 alert弹出警告框oQvtitle 在 JavaScript 中使用 document,write。方法 v/titledocument.write(Date();脚本26.html运行上面HTML代码,浏览器显示结果如图2.6所示。Wed Mar 29 2017 22:23:54 GMT+0800(中国标准时间)图2.6 document.write。显示结果(3)使用console.log。写入到浏览器控制台,示例代码如 脚本2-7所示。vtitle 在 JavaScript 中使用 con

5、sole.log。方法 v/titlea=5;b=6;c=a+b;console.log(c);Q脚本2.7.html运行上面HTML代码,浏览器显示结果如图2.7所示。Developer Tools-file:/G:/ziliao/JavaScript%E7%A8%.XK flElements Console Sources Network Timeline 0 top U Preserve log策8%84%汕E6%9C%AC2-5.卜5二:豆图2.7 console.Iog()显示结果o比较这3种调试技巧,console.log。是一种更好的方 Y 式,在实际应用中,更受开发人员的青睐。

6、对比分析如下 O (1)如果在文档已完成加载后执行document.write,整个HTML页面将被覆盖,对程序的执行造成不便。(2)alert()函数会阻断JavaScript程序的执行,从而出 现副作用,而且使用alert()方法需要单击弹出窗的确认按 钮,操作麻烦,最重要的是alert()只能输出字符串。T(3)console.log。仅在控制台打印相关信息,不会对 JavaScript程序执行造成阻隔,此外,console,log()可以 接受任何字符串、数字和JavaScript对象,可以看到清楚O 的对象属性结构,在ajax返回json数组对象时调试很方便O。2.3语句JavaSc

7、ript语句是向浏览器发出的命令。语句的作用是告?诉浏览器该做什么。下面的JavaScript语句将“1+2”的值赋给 1变量a,也叫变量赋值。var a=1+2;var是变量声明命令,这里声明了变量a,然后将1+2的计算 结果赋值给变量a。1+2在JavaScript中叫表达式,会返回一个计算结果。表达 式和语句的区别在于:表达式由运算符构成,并运算产生结果的 T语法结构,每个表达式都会返回一个值。而语句主要是为了进行 某种操作,一般情况下不需要返回值。语句以分号结尾。一个分号代表一条语句结束。多条语句0可以写在一行内,如:var a=1+2;var b=ab c;o 2.4变量241变矍的

8、槌念在日常生活中,有些东西是固定不变的,而有些东西则 会发生很多变化,如天气、时间等。在程序设计语言中,约 定俗成将这些会改变的东西称之为变量。同代数一样,JavaScript变量可用于存放值和表达式。6变量的命名遵循以下原则:(1)变量必须以字母开头;?(2)变量也能以$和_开头(不过不推荐这么做);1(3)变量名不能包杳空格或其他标点符号;(4)变量名称对大小写敏感(a和A是不同的变量)。OoO242暧量的类型JavaScript是一种动态类型语言。变量的类型没有限制,可以赋予各种类型的值。比如文本值(name=John)。在 JavaScript中,类似John这样一条文本被称为字符串。

9、尽管JavaScript变量有很多种类型,但是现在,我们只 需要关注数字和字符串两种类型。当向变量分配文本值时,应该用双引号或单引号来包围 这个值。当局变量赋的值是数值时,不要使用引号。如果用引号 包围数值,该值会被作为文本来处理。o了 243暧量声明贼值1 在JavaScript中,变量声明用关键词var,变量赋值用二。变量声明赋值其实是分开的两步操作,比如var a=1这样一 条赋值语句实际的步骤是下面这样的:;var a;/声明变量a.a=1;/给变量a赋值为1如果只是声明了变量a而没有给变量a赋值,那么变量a的值 是undefined。6 变量必须声明之后才能使用,否则JavaScri

10、pt会报错:变量未定义。Oo2.4.4变量作用域JavaScript变量分为全局变量和局部变量。A 变量在函数内声明即为局部变量。局部变量有局部作用域:只能在函数内访问。变量在函数外定义,即为全局变量。全局变量有全局作用域:网页中所有脚本和函数均可使用。如果变量在函数内没有 使用var关键字声明,该变量也为全局变量。?变量生命周期:局部变量在函数开始执行时创建,函数执A行完后局部变量会自动销毁;全局变量在页面关闭后销毁。O下面来看一个实例,如脚本2-8所示。vMtle全局变量和局部变量示例v/Mtlevar a=global;b=global”;function testaFunction()

11、var a=local;return a;)function testbFunction()b=local;return b;)console.log(a);/1console.log(testaFunction();/2console.log(b);/3console.log(testbFunction();/4console.log(b);/5 脚本28.html运行脚本2-8显示结果如图2.8所示。9 Developer Tools-file:/G:/%E5%88%98%E6%95%8F-/JavaS.一 XQ flElements Console Sources Network Per

12、formance Memory E 0top Filter Default levels M Group similar 0global localglobal local local脚本 2-8.html:18、脚本 2-8.html:19脏肱 2-8.html:20能肱 2-8.html:21幽本 2-8.htEl:22 图2.8变量作用域示例结果oQ;245变量提价 JavaScript引擎工作方式是:先解析代码,获取所有被声明的变量,然后再一行一行地运行代码。这样所有变量声明语 句都会被提升到代码头部执行。这就叫作变量提升。先看一段简单的代码,如脚本2-9所示。QoQvtitle 变量

13、提升 v/title console.log(a);var a=1;脚本29.html回oQ按惯性逻辑来理解,首先在控制台打印出a的值,但这个 时候a还未声明和赋值,所以应该会报错。但实际上并不会报 错,运行结果如图2.9所示。7 Developer Tools-file:/G:/%E5%88%98%E6%95%8F-/JavaS.-XQ td Elements Console Sources Network Performance Memory H 0 top|Filter Default levels U Group similar Qundefined 能口本2-9.html:8图2.9

14、变量提升示例结果因为存在变量提升,真正运行的是脚本2-10。vtitle 变量提升 v/titlevar a;console.log(a);a=1;脚本210.html所以控制台显示的结果是undefined,表明变量a已经声 明但未赋值。o 2.5数据类型var a=1;?var b=ab ed;如上,变量a是数值类型,变量b是字符串类型。虽然变 量a、b是两种不同的数据类型,但在JavaScript脚本中对它 们声明和进行赋值的语法无任何区别。有些程序设计语言要 求程序员在声明变量的同时必须明确地指定其数据类型。像 这种要求程序员必须明确地对数据类型做出声明的程序设计 语言被称为强类型语言

15、,而像JavaScript这样不要求声明数 T 据类型的语言称为弱类型。所谓弱类型意味着程序员可随意改变某个变量的数据类型。O 在JavaScript中数据类型可分为两大类:基本数据类型和引用数据类型。2.5.1基域撤据类型JavaScript中有5种基本数据类型,分别为字符串(String)类型、数殖(Numb er)类型、布尔(Boolean)类型、Null类 型、Undefined类型。1.String类型 String类型用于表示由零或多个16位Unicode字符组成的字3符序列,即字符串。字符串必须包括在引号之间,单引号和双引号都可以。?2.Numb er类型i Numb er类型用

16、来表示整数、浮点数值和另一种特殊数值NaN JavaScript为了支持各种数值类型,定义了不同的数值字面量格式。o3.Boolean类型Boolean类型有两个字面值:true和false。但这 两个值与数字值并不等同,即true不一定等于1,false 不一定等于0。4.Undefined类型Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未进行初始化的时候,这个变量的 值就是undefined,如下所示。var message;alert(message);/输出 undefined运行显示结果如图2.12所示。O此网页显示:undefined禁止此页

17、再显示对话框。X确定图2.12 Undefined类型示例结果Developer Tools-file:/C:/Users/1/Desktop/%E8%84.XQ(5J Elements Console Sources Network Timeline 010 57 top U Preserve logundefined 脚本O Uncaught ReferenceError:messagel is not defined 能。本at 脚本 IQ图2.13 Undefined类型变量和未定义变量比较结果5.Null类型Null类型是第二个只有一个值的数据类型,即特殊 的null。从逻辑角度来看

18、,null值表示一个空对象指针 如果定义的变量准备在将来用于保存对象,那么最好 将该变量初始化为null而不是其他值。这样只要直接检 测null值就可以知道相应的变量是否已经保存了一个对 象的引用了,例如:if(ob ject!=null)/对ob ject对象执行某些操作 一一252引用裁据类型引用类型通常叫作类,也就是说,遇到引用值时,所处 理的就是对象。1.Ob ject类型Ob ject类是JavaScript中使用最多的一种类型。Ob ject 对象是一组数据和功能的集合。创建Ob ject实例有两种方式。一种是使用new操作符后 跟Ob ject构造函数。另一种方式是使用对象字面量

19、表示法。oQOOOQO2.A rray类型JavaScript中的数组与其他多数语言中的数组有着相 当大区别。虽然JavaScript数组与其他语言中的数组都是 数据的有序列表,但与其他语言不同的是,JavaScript数 组的每一项都可以是任何类型的数据。也就是说,可以用 数组的第1个位置来保存字符串,用第2个位置来保存数值,用第3个位置来保存对象。而且,JavaScript数组的大小是 可以动态调整的,即可以随着数据的添加自动增长以容纳 新增数据。OoQ创建数组的方式有两种。第1种是使用A rray构造函数。var fruitsl=new A rray();var fruits2=new

20、A rray(10);var fruits3=new A rray C apple,b anana,peach,);创建数组的第2种方式是使用数组字面量表示法。var fruitsl=;var fruits2=apple,b ananapeach;在读取和设置数组的值时,要使用方括号并提供相应 值的基于0的数字索引。var fruits 二apple,b anana,peach;/定义一个字符串数组console,log(fruits0);fruits1=grape;fruits3=lemon”;/显示第1项/修改第2项/新增第4项console,log(fruits);运行结果如图2.14所

21、示。Developer Tools-file:/C:/Users/1/Desktop/%E8%84.XJ Elements Console Sources Network Timeline q top D Preserve logapple 脚本 nappLenj grapen,peachrj nLemon 蒯本 1.html:11图2.14数组读写操作结果oQOOOQ数组长度保存在其length属性中,这个属性始终会 返回0或更大的值。var fruitsl=;var fruits2=1 apple,b anana,peach,;console.log(fruitsl.length);con

22、sole,log(fruits2.length);运行结果如图2.15所示。OoDeveloper Tools-file:/C:/Users/1/Desktop/%E8%84.Xre flElements Console Sources Network Timeline 0,top U Preserve log03 I脚本脚本1.卜:相:IC图2.15数组length属性操作结果o 3.Date类型JavaScript中的Date类型是在早期Java中的java.util.Date 类基础上构建的。为此,Date类型使用自UTC 1970年1月1日零时 开始经过的毫秒数来保存日期。在使用这种数

23、据存储格式的条件 下,Date类型保存的日期能够精确到1970年1月1日之前或之后的 285 616年。/日期对象的创建使用new操作符和Date构造函数。var now=new Date();?在调用Date构造函数而不传递参数的情况下,新创建的对象A自动获得当前日期和时间。如果想根据特定的日期和时间创建日 期对象,必须传入表示该日期的毫秒数。为了简化这一计算过程,JavaScript提供了两个方法:Date,parse()和Date.UTC()。表22 Date类型方法方法描述Date()返回当日的日期和时间getDate()从Date对象返回一个月中的某一天(131)getDay()从D

24、ate对象返回一周中的某一天(。6)getMonth()从Date对象返回月份(。11)getFullYear()从Date对象以4位数字返回年份getHours()返回Date对象的小时(023)getMinutes()返回Date对象的分钟(。59)getSeconds()返回Date对象的秒数(059)getMilliseconds()返回Date对象的毫秒数(0-999)getTime()返回1970年1月1日至今的毫秒数getTimezoneOffset()返回本地时间与格林威治标准时间(GMT)的分钟差getUTCDay()根据世界时从Date对象返回周中的一天(。6)getUTC

25、Month()根据世界时从Date对象返回月份(。11)getUTCFullYear()根据世界时从Date对象返回4位数的年份getUTCHours()根据世界时返回Date对象的小时(。23)getUTCMinutes()根据世界时返回Date对象的分钟(。59)getUTCSeconds()根据世界时返回Date对象的秒数(。59)getUTCMillisecondsO根据世界时返回Date对象的毫秒(。999)parse()返回1970年1月1日午夜到指定日期(字符串)毫秒数setDate()设置Date对象中月的某一天(1-31)setMonth()设置Date对象中月份(。11)s

26、etFullYear()设置Date对象中的年份(4位数字)setHours()设置Date对象中的小时(023)setMinutes()设置Date对象中的分钟(059)setSeconds()设置Date对象中的秒数(。59)setMilliseconds()设置Date对象中的毫秒(0-999)setTime()以毫秒设置Date对象setUTCDate()根据世界时设置Date对象中月份的一天(131)setUTCMonth()根据世界时设置Date对象中的月份(。11)setUTCFullYear()根据世界时设置Date对象中的年份(4位数字)setUTCHours()根据世界时设

27、置Date对象中的小时(。23)setUTCMinutes()根据世界时设置Date对象中的分钟(。59)setUTCSeconds()根据世界时设置Date对象中的秒数(。59)续表方法描述setUTCMilliseconds()根据世界时设置Date对象中的毫秒(。999)toSource()返回该对象的源代码toString()把Date对象转换为字符串toTimeString()把Date对象的时间部分转换为字符串toDateString()把Date对象的曰期部分转换为字符串toUTCString()根据世界时,把Date对象转换为字符串toLocaleString()根据本地时间格

28、式,把Date对象转换为字符串toLocaleTimeString()根据本地时间格式,把Date对象的时间部分转换为字符串toLocaleDateString()根据本地时间格式,把Date对象的曰期部分转换为字符串UTC()根据世界时返回1970年1月1日到指定曰期的毫秒数valueOf()返回Date对象的原始值o4.RegExp类型在JavaScript中,RegExp对象用来表示正则表达式。同前:面介绍的Ob ject类型和A rray类型一样,正则表达式的创建也有字 面量和构造函数两种方式。第1种,使用字面量形式来定义正则表达式。i var express=/pattern/fla

29、gs;其中的模式(pattern)部分可以是任何简单或者复杂的正 o则表达式,可以包含字符类、限定符、分组、向前查找以及反向:引用。每一个正则表达式都可以带有一个或者多个标志(flags),用以标明正则表达式的行为。Oo正则表达式匹配模式支持以下3个标志o g:表示全局(glob al)模式,即模式将被应用于所有 字符串,而非在发现第一个匹配项时立即停止;i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;m:表示多行(multiline)模式,即在到达一行文本末 尾时还会继续查找下一行中是否存在与模式匹配的项。第2种,使用RegExp构造函

30、数来定义正则表达式。RegExp构造函数接收两个参数,一个是要匹配的字符 串模式,另一个是可选的标志字符串。var pattern=new RegExp(b eat,i)o5.Function类型在JavaScript中,函数实际是对象。每个函数都是Function 类型的实例。?函数的声明有3种方式,第1种:使用函数声明语法定义。o function sum(numl,num2)return numl+num2;r 第2种:使用函数表达式定义函数。var sum=function(numl,num2)/通过变量sum即可引用函数 return numl+num2;?;/注意函数末尾有一个分号

31、,就1像声明其他变量时一样var suml=sum;使用不带圆括号的函数名是访问函数指针,而非调用函数q suml(5,6);oO第3种:使用Function构造函数。var sum=new Function(numl,num2,return numl+num2”);第3种方式不推荐,这种语法会导致解析两次代码(第1 次解析常规JavaScript代码,第2次解析传入构造函数中的 字符串),从而影响性能。2.5.S基洋熬据类型和引用熬据类逐的虞刎JavaScript包含两种不同类型的值:基本类型值和引 用类型值。基本类型值指的是简单的数据段;引用类型值指由多 个值构成的对象。当把对象赋值给另外

32、一个变量时,解析器 首先要做的是确认这个值是基本类型值还是引用类型值。基本数据类型是按值访问的,因为可以直接操作保存 在变量中的实际值。var a=10;var b=a;b=20;alert(a);运行显示结果如图2.16所示。o此网页显示:10确定x图2J6基本数据类型操作显示结果oo再来看引用数据类型,引用数据类型是保存在堆内存中 的对象。但它与其他语言不同的是,不可以直接访问堆内存空T 间中的位置和操作堆内存空间。只能通过操作对象在栈内存中入的引用地址。所以引用类型的数据,在栈内存中保存的实际上 是对象在堆内存中的引用地址。通过这个引用地址可以快速查。找到保存在堆内存中的对象。3 var

33、 ob jl=new Ob ject();var ob j2=ob jl;o ob j2.name=你好;alert(ob jl.name);运行显示结果如图2.17所示。ooO此网页显示:U禁止此页再显示对话框。图2J7引用数据类型操作显示结果X确定o综上,总结一下基本数据类型值和引用数据类型值的区O 八7 1 1.声明变量时不同的内存分配(1)基本类型值:存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。(2)引用值:存储在堆(heap)中的对象,也就是说,存 储在变量处的值是一个指针(point),指向存储对象的内存?地址。O2.不同的内存分配机制也带来了

34、不同的访问机制(1)在Javascript中是不允许直接访问保存在堆内存中的对 象的,所以在访问一个对象时,首先得到的是这个对象在堆内 9存中的地址,然后再按照这个地址去获得这个对象中的值,这!就是传说中的按引用访问。(2)而原始类型的值则是可以直接访问到的。r 3.复制变量时的不同1(1)基本类型值:在将一个保存着原始值的变量复制给另一个变量时,会将原始值的副本赋值给新变量,此后这两个变量 是完全独立的,它们只是拥有相同的value而已。(2)引用类型值:在将一个保存着对象内存地址的变量复制 给另一个变量时,会把这个内存地址赋值给新变量,也就是说 这两个变量都指向了堆内存中的同一个对象,它们

35、中任何一个?做出的改变都会反映在另一个身上。o1 4.参数传递的不同(把实参复制给形参的过程)9 首先应该明确一点:JavaScript中所有函数的参数都是1 按值来传递的。(1)基本类型值:只是把变量里的值传递给参数,之后参 数和这个变量互不影响。(2)引用类型值:对象变量它里面的值是这个对象在堆内存中的内存地址。因此它传递的值也就是这个内存地址,这也就是为什么 函数内部对这个参数的修改会体现在外部的原因了,因为它 们都指向同一个对象。Oo尸254照根类型转换JavaScript是一种无类型语言,但同时JavaScript提供了 一种灵活的自动类型转换的处理方式。基本规则是,如果某个 类型的

36、值用于需要其他类型的值的环境中,JavaScript就自动 将这个值转换成所需要的类型。6 JavaScript数据类型转换主要有3种方法:利用转换函数、强制类型转换和利用JavaScript变量弱类型转换。OO.1.转换函数JavaScript 提供了 parselnt()和 parseFloat()两个转换函 数。parselnt()函数把值转换成整数,parseFloat()把殖转 换成浮点数。但只有对String类型调用这些方法,这两个函 数才能正确运行;对其他类型返回的都是NaN。parselnt()方法类型转换处理过程为:在判断字符串是i否是数字值之前,先仔细分析该字符串。pars

37、elnt()方法首 先查看位置0处的字符,判断它是否是个有效数字;如果不是 O,该方法返回NaN,不再继续执行其他操作。但如果该字符是 1有效数字,该方法将查看位置1处的字符,进行同样的判断。这一过程将持续到发现非有效数字的字符为止,此时 parselnt()将把该字符之前的字符串转换成数字。Oo.2.强制类型转换JavaScript提供了3个强制类型转换函数:Boolean(value)、Numb er(value)String(value)oBoolean(value):把值转换成Boolean类型。参数value不同 将会返回不同的结果。X 如果value为“至少有一个字符的字符串”“非

38、0的数字”或者对象,那么Boolean(value)将会返回true;如果value为“空手符串”“数字0”“undefined”“null”,那么Boolean1(value)将会返回 f al se。o利用JavaScript变量弱类型转换 通过脚本2-15来解析。vtitle变量弱类型转换v/title console.log(1+2+2);console.log(1+2+2);console.log(,A-B+,2n);console.logfA-HB+2);12 3 4 亍一丁一丁一丁 ZXI Z4 Z1 脚本215.htmlo运行结果如图2.21所示。Developer Tools

39、-file:/G:/ziliao/JavaScript%E7%A8%8B%E5%BA%8F%E8%.-XG Elements Console Sources Network Timeline Profiles Application 0 57 top O Preserve log12232 NaN2 NaN骷 D 木脚本O图2.21变量弱类型转换显示结果Oo 2.6表达式和运算符本节来学习JavaScript的表达式和运算符。如果已经 工 具备其他编程语言基础如C、C+、Java等,那么本章的知 识应该会非常简单,因为JavaScript的表达式和运算符与 这些语言的表达式和运算符是相似的。通

40、过本节的学习,&可以很轻松地再去温故一遍这些基础知识。如果没有这些编程语言基础,那也没关系,学完本节,以后再去应对其 9 他语言的表达式和运算符也是很简单的。OO261表达式和运算符的椭念ooooo表达式是各种数值、变量、运算符的综合体,最简单的表达式可以是常量或者变量名称。表达式的值是表达式运算的结 果,常量表达式的值就是常量本身,变量表达式的值则是变量 引用的值。在实际编程中,可以使用运算数和运算符建立复杂 的表达式,运算数是一个表达式内的常量和变量,运算符是变 量中用来处理运算数的各种符号。如,常量表达式:hello;变量表达式:example;赋值表达式:string=hello wo

41、rld”。oo262运算符类型运算符是变量中用来处理运算数的各种符号,JavaScript提供了6种基本运算符,分别为一元运算符、算术运算符、关 系运算符、逻辑运算符、位运算符、赋值运算符以及其他运算 符。1.一元运算符只能操作一个数的操作符叫作一元操作符。一元操作符是JavaScript中最简单的操作符。(1)递增(+)和递减(-)运算符。运算符“+,是对它唯一的运算数进行递增操作(每次加1),这个运算数必须是一个变量、数组的一个元素或 对象的一个属性。如果该变量、元素或属性不是一个数字,运算符“+,首先会将它转换为数字。在实际编程中,运算符“+”有两个版本:前置型和后置型。顾名思义,前置型

42、即“+”存在于运算数之前,也叫前递增运算符;后置型即“+”存在于运算数之后,也叫后递增运算符。前递增运算符先对运算数进行递增,然后用运算数进行增长后的值进行计算;后递增运算符则相反,先用运算数进行表达式计算,再将运算数递增。如下面例子所示。var age=24;var agel=+age;console,log(age);console,log(agel);运行显示结果如图2.22所示。Developer Tools-file:/C:/Users/1/Desktop/%E8%34.XQ(5ZI Elements Console Sources Network Timeline 0 q top

43、U Preserve log25,本25 一本 I图2.22前递增运算符操作结果o运算符“一”是对它唯一的运算数进行递减操作(每次减1 T),这个运算数必须是一个变量、数组的一个元素或对象的一 个属性。如果该变量、元素或属性不是一个数字,运算符“一”首先会将它转换为数字。Developer Tools-file:/C:/Users/1/Desktop/%E8%84.XG j_|Elements Console Sources Network Timeline 0 top Preserve log25 脚本24 脚本Q图2.23后递增运算符操作结果oQOOOQO同运算符“+”一样,运算符也有两个

44、版本:前 置型和后置型。顾名思义,前置型即”存在于运算数之 前,也叫前递减运算符;后置型即”存在于运算数之后,也叫后递减运算符。前递减运算符先对运算数进行递减,然后用运算数递减 后的值进行计算;后递减运算符则相反,先用运算数进行表 达式计算,再将运算数递减。OQ(2)一元加和减运算符。一元加运算符以一个表示,放在数值前面,对数值不 会产生任何影响,如下面例子所示。var numb er=25;numb er=+numb er;alert(numb er);运行显示结果如图2.26所示。X此网页显示:25禁止此页再显示对话框。确定图2.26 元加运算符运算结果o如果将一元加运算符应用于非数值时,

45、该运算符会首先 对这个值进行转换。即布尔值false和true将被转换为0和1;字符串会按照一组特殊的规则进行解析;而对象是先调用它 们的valueOf()或toString()方法,再转换得到的值。一元减运算符以一个“-”表示,放在数值前面,执行2一元取反操作。简而言之,它将把一个正值转换成相应的负 值,反之亦然。但如果运算数是非数值,一元减运算符遵循?与一元加运算符相同的规则,最后再对得到的值取反。OODeveloper Tools-file:/C:/Users/1/Desktop/%E8%84.-XG Qj ElementsConsole SourcesNetworkTimeline I

46、:0 top Preserve logsi为:-1脚本s2为:-1.1S3为:NaN月如本l.hm::22b为:0映本 1.HFL23f为:-1.1月如本1.Zf=2Mo为:1映本 l.html:25|图2.28不同数据类型一元减运算符操作结果1 2.算术运算符JavaScript算术运算符包括加法(+)、减法(-)、?乘法(*)、除法(/)和取余()。(1)加法(+)。在多数程序设计语言中,加法通常是简单的数字运算 o 符,但在JavaScript中,加法运算有大量的特殊行为,不 1 仅可以进行数值加法运算,也可以进行字符串连接。加法运算符用法如下所示。var result=1+2;如果两个

47、操作数都是数值,则执行常规的加法运算,然后根据以下规则返回运算结果。O如果有一个操作数为NaN,则结果是NaN。如果是Infinity加Infinity,则结果是Infinity。如果是-Infinity加-Infinity,则结果是一Infinity。如果是Infinity加-Infinity,则结果是NaN。T 如果是+0加+0,则结果是+0。工 如果是-0加-0,则结果是-0。如果是+0加-0,则结果是+0。如果操作数包含字符串,则需应用如下规则。i 如果两个操作数都是字符串,则将两个操作数拼接起来作 为结果返回。?5如果只、一个操作数是字符串,则另一个操作数需转换为I字符串,然后将两个

48、操作数拼接起来作为结果返回。如果有一个操作数是对象、数组或布尔值,则调用它们的 toString()方法得到相应的字符串,然后再应用前面关于字符 串的规则。对于undifined和null,则调用String。函数并取得“undifined和null”。(2)减法(-)oo 相对于加法而言,减法则简单得多,只涉及数字的减法运算。减法运算符运用如下所示。o var result=2-1;同加法运算符一样,减法运算符在实际编程中也需要遵循 如下这些规则。如果两个操作数都是数值,则执行常规的减法运算。如果有一个操作数是NaN,则结果为NaN。如果是Infinity减Infinity,则结果是NaN。

49、如果是-Infinity减-Infinity,则结果是NaN。如果是Infinity减-Infinity,则结果是Infinity。如果是-Infinity减Infinity,则结果是一Infinity。如果是+0减+0,则结果是+0。?如果是-0减-0,则结果是+0。如果是+0减-0,则结果是-0。oO如果有一个操作数是字符串、布尔值、null或undefined,则先调用Numb er。函数将其转换为数值,再使用前面的规则进行减法运算。如果有一个操作数是对象,则调用对象的valueOf()方法以取得表示该对象的数值。如果对象没有valueOf。方法,则调用其toString。方法将得到的字

50、符串转换为数值,最后再使用前面的规则进行减法运算。(3)乘法(*)o乘法操作符由一个星号(*)表示,用于计算两个数值的乘 T积。乘法运算符运用如下所示。1 var result=2*1;乘法运算符遵循以下特殊规则。如果操作数都是数值,则执行常规的乘法操作。如果有一个操作数是NaN,则结果是NaN。如果是Infinity和0相乘,则结果是NaN。如果是Infinity和非0数值相乘,则结果是Infinity或一?Infinity,取决于有符号操作数的符号。如果是Infinity和Infinity相乘,则结果是Infinity。如果有一个操作数不是数值,则先调用Numb er。将其转换为数值,再应

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服