版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JS中的运算符有优先级和结合性的概念。所谓的优先级是指如果同时出现多个运算符时,没有括号的情况下先执行哪一个。优先级高的先执行,优先级低的后执行。如,a+b*c,因为*乘号的优先级高,所以先算b*c,再计算a加bc的积。结合性是指相同优先级的运算符在同一个表达式中,且没有括号的时候,运算符和操作数的结合方式,通常有从左到右结合(称为左结合性)和从右到左结合(称为右结合性)两种方式。如a+b+c,因为+(加号)是左结合的,所以等价于(a+b)+c。JavaScript中的运行符如表4-3[18][19]所示。注:优先级从上到下依次降低,即1最高,15最低。如果在实际工作中,不能确定运算符的优先级时,用括号改变运算顺序是不错的选择。从表4-13可以看出运算符的基本用法,现在对表中无法说明的内容再做一下说明。1、优先级与结合性虽然JS规定了运算符的优先级,但要确定记住每个运算符的优先级恐怕不是那么容易。如果在编程时不能确定要使用的运算符的优先级该怎么办呢?当然可以查阅JS手册或者参考书,但还有一个更容易的办法,那就是用圆括号改变运算次序。把需要先计算的表达式放在圆括号里,圆括号的表达式优先级是最高的,所以最先进行求值计算。如3*6+5;//233*(6+5);//33关于优先级和结合性再举一个复杂点的例子。vara=1;m=++a+++a+++a;那么m的值是多少呢?这就涉及优先级和结合性的问题了。式子中有3个运算符,分别是=,++和+,从表4-13中可以看到++优先级高于+运算符,而+运算符高于=运算符,所以先计算++,再计算+,最后进行赋值运算。所以上面的第二个式子等价于m=(++a)+(++a)+(++a);因为a的值为1,所以第一个++a的值为2,第2个++a的值为3,第3个++a的值为4,所以m=2+3+4=9。2、其他说明(1)逻辑运算符逻辑运算符对布尔型的值进行操作,返回布尔型的值。逻辑运算的真值表如下:true&&true=true true&&false=falsefalse&&true=false false&&false=false可以看出,逻辑与运算只有两个操作数同时为true时,结果才是true。逻辑或的真值表如下:true||true=true true||false=truefalse||true=true false||false=false可以看出,逻辑或运算只要有一个操作数为true,则结果就为true。逻辑非的真值表如下:!true=false !false=true逻辑非运算为单目运算符,只有一个操作数,进行的操作是对操作数取反。值得注意的是,逻辑运算会出现“短路”现象。所谓短路是指,只对参与运算的第一个表达式求值,而忽略第二个作为操作数的表达式,这种现象称之为短路。如5>6&&7>86>5||8>7对于第一个表达式,因为5>6的结果为false,所以整个表达式的值即为false,对第二个表达式7>8求值(false)已经没有必要,所以JS解释器不会对7>8这一表达式求值,出现短路现象。同理,6>5求值为真,所以第二个表达式的值则为true,没必要对8>7再进行求值,就可以确定二个逻辑表达式为真,也出现短路现象。参与逻辑运算的操作数不一定非是true和false,只要是运算结果是布尔型值的表达式,或者运算结果可以转换成布尔型值的表达式都可以。如上式中的5>6等,下面再举一个操作数为可以转换成布尔型的例子,如下面的代码所示。vara=3,b=4;if(1||a>b){
out("无论a和b是什么值都会执行。");}else{
out("无论a和b是什么值都不会执行。");}上面的if~else为分支结构(见4.6.2节),其中条件1||a>b中的第一个表达式1是一个数字,在这里会被自动转换成布尔型的true,也就相当于true||a>b,所以无论a和b的值是什么,总会执行if中的语句(见4.6.2节),即输出"无论a和b是什么值都会执行。(2)位运算符
位运算符指的是逻辑位运算按位与&、按位|、按位异或^和按位非~,和移位运算左移<<、右移>>和无符号右移。位运算的操作数是整数或者可以自动转换成整数的值。下面给出逻辑位运算的真值表。按位与(简记为有一个为0即为0)0&0=0 0&1=01&0=0 1&1=1按位或(简记为有一个为1即为1。)0|0=0 0|1=11|0=1 1|1=1按位非(或按位取反)~0=1 ~1=0按位异或(简记为异则为1,同则为0)0^0=1 0^1=11^0=1 1^1=0移位运算是指将第一个操作数(32位的整数)的二进制表示向左或向右移动第二个操作数的位数,移位结果也是32位的整数(这里需要注意JavaScript是以64浮点数表示数值的,但移位操作非常特别,主要是那个年代没有64位的机器^_^!)。如8>>1即表示将8的二进制向右移动1位(相当于除以2(不能整除则取整),左移1位相当于乘以2)。什么是二进制数这里不作解释,有兴趣的读者可网上搜索或者参阅计算机组成原理的相关书籍。位运算在实际开发中应有的比较少,这里不再展开论述。(3)其他运算符
+操作符有3种含义,分别是正号、加号和连接符号。在编程中通常正号省略,连接两个数字时为加号;只要其中有一个操作数为字符串,则全部操作数转换为字符串(转换规则见表4-2),运算结果也为字符串。==和===分别为等于和严格等于。==是判断两操作数“值”是否相等,如果两操作数类型不同,则先进行类型转换然后再比较二者的值是否相等。而对于===则先判断二者类型是否相等,如果不等则返回false不再进行比较。+=,-=,*=等复合赋值运算符,左右两个操作数先执行指定的+,-和*的运算再进行赋值操作,且左操作数必须为变量。比如vara=1;a+=1;//相当于a=a+1,即执行a+1操作再把a+1的结果赋值给a。其他复合赋值运算符也是如此,只是执行的运算不同,不再赘述。++和--操作符。这两个操作符即可以作为前缀操作符(即出现在操作数之前),也可以作为后缀操作符(出现在操作数之后),但含义不同。作为前缀操作符时,先对操作数进行自加/自减操作,再使用操作数,而对于后缀操作符时,则先使用操作数的值,再进行自加/自减操作。如vari=5;//a=6,即执行i+1之后(先用,此时i为5)再进行i自加操作(此时i变为6)vara=i+++1;而//a=7,即先进行i自加操作使i变为6,再进行加1操作vara=++i+1;4.5.2表达式和语句在JavaScript中由字面量、变量和操作符构成的式子,解释器可以对表达式进行求值。例如,3+5//字面量数学计算表达式a+b*c//变量数学计算表达式a[i]//数组元素访问表达式6>5&&a>b//
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学电影活动策划方案(3篇)
- 送花主题活动策划方案(3篇)
- 卡通烘焙活动策划方案(3篇)
- 大型招牌施工方案(3篇)
- 透明雨棚施工方案(3篇)
- 积聚中医护理方案
- 2025年美容美发行业卫生与操作标准
- 美容语言技巧培训课件
- DB3502-T 169-2024 水上旅游客运服务规范
- 2025年高职水产养殖技术(水质调控)试题及答案
- 河南洛阳炼化宏达实业有限责任公司招聘笔试题库2026
- 仓库租赁合同协议书
- 2025年母子公司间投资合同范本
- 2025山西朔州市公安局招聘留置看护岗位辅警260人笔试考试参考试题及答案解析
- 医院安全生产下一步工作计划
- 实验室质控考核管理
- 2025青海省生态环保产业有限公司招聘11人笔试考试参考题库及答案解析
- 2026梦工场招商银行太原分行寒假实习生招聘考试笔试备考题库及答案解析
- 销毁物品协议书范本
- 2025高一英语上学期期末复习资料
- 办公室主任年度述职报告
评论
0/150
提交评论