js运算符复习-阿里云开发者社区

开发者社区> webmirror> 正文

js运算符复习

简介: 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=) 算术运算符(+,-,*,/,++,--,%) 比较运算符(>,<,<=,>=,==,===,!=,!==) 逻辑运算符(||,&&,!) 条件运算(?
+关注继续查看

运算符就是完成操作的一系列符号,它有七类:

赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=)

算术运算符(+,-,*,/,++,--,%)

比较运算符(>,<,<=,>=,==,===,!=,!==)

逻辑运算符(||,&&,!)

条件运算(?:)

位移运算符(|,&,<<,>>,~,^)

字符串运算符( + )

算术运算符

基本运算符

“+”:对数字进行代数求和,连接多个字符串或连接字符串与数字,此时会自动把数字转化为字符串然后拼接

“-”:对操作数进行取反操作,对数字进行减法操作,字符串-数字时会自动先把字符串转换为数字

“*”:对两个数进行乘法运算,同号为正异号为负

“/”:对两个运算数进行除法运算,同号正异号负

“%”:返回两个除数的余数,和第一个运算数的符号相同

复合赋值运算符

“+=”:

“-=”:

“*=”:

“/=”:

“%=”:

自增与自减

“++”:对唯一运算符进行递增操作(每次加1);运算数必须为一个变量、数组的一个元素或对象的属性,若运算数非数值则运算符会把它先转化为数值,符号位置决定运算结果

“--”:对唯一运算符进行递减操作(每次减1);运算数必须为一个变量、数组的一个元素或对象的属性,若运算数非数值则运算符会把它先转化为数值

注意:符号位置决定运算结果:符号位于运算数之前(先进行递增/递减操作,再进行求值);符号位于运算数之后(先求值,再进行递增/递减操作)

关系运算符

大小关系检测

“<”:如果a小于b,则返回true,否则返回false

“<=”:如果a小于等于b,则返回true,否则返回false

“>”:如果a大于b,则返回true,否则返回false

“>=”:如果a大于等于b,则返回true,否则返回false

操作规则:数值与数值间比较它们的代数值,数值和其他则先把其他转化为数值然后比较,字符串间逐字符比较他们的unicode数值,字符串和非数值间线转化为字符串再比较,运算数既无数值也无字符串则线转化为数值或字符串在比较,无法转化为数值和字符串时则返回false,与NaN比较返回false

等值关系检测

相等比较:操作符有== 和!= ;类型转换(布尔值——true为1,false为0;对象——调用valueOf() 得到基本类型;字符串与数值的比较——字符串转换为数值);比较原则(null与undefined——相等;NaN ——与任何数值都不相等包括其自身;对象——是否属于同一对象 是为== 否为!=)。

相同比较:操作符有===和!== 比较两个运算数的返回值及数据类型是否相同;比较的原则(值类型间比较——只有数据类型相同,且数值相等时才能够相同;值类型与引用类型比较——肯定不相同;引用类型间比较——比较它们的引用值即内存地址)

对象运算符

“in”:判断左侧运算数是否为右侧运算数的成员

“instancesof”:判断对象实例是否属于某个类或构造函数

“new”:根据构造函数创建一个新的对象并初始化该对象

“delete”:删除指定对象的属性、数组元素或变量

“./[]”:存取对象和数组元素

“()”:函数调用,改变运算符优先级等

逻辑运算符

“!逻辑非”:空字符串/0/null/NaN/undefined返回true,对象/非空字符串/非0数值返回false,连续使用两次则可以将任意类型转为布尔型

特性:如果运算数的值为false则返回true,否则返回false;连续两次!,可将任意类型转为布尔型值

“&&逻辑与”:同为true才为true否则为false,当第一个操作数为false则不再对第二个操作数求值;第一个操作数为对象/两个操作数都是对象则返回第二个操作数,第二个操作数为对象第一个操作数为true时返回该对象,一个操作数为null/nan/undefined返回null/nan/undefined

“||逻辑或”:同为false则为false否则为true,第一个为true不再操作第二个;第一个操作数为对象/同为对象返回第一个操作数,第一个操作数为false返回第二个操作数,两个操作数都为null/nan/undefined则返回null/nan/undefined

位运算符

位运算符包括前31位数值位和第32位符号位,符号位为0为正数为1为负数,无符号只能为正数且可以有32位数值使数值范围加大,其数值范围:-2147483648~2147483647;正数用纯二进制存储,31位中每位表示2的幂,用0补充无用位;负数用二进制补码存储(确定该数字非负版本的二进制表示,求得二进制反码,既要把0替换为1把1替换为0,在二进制反码上加1),NaN和infinity被当作0来处理;

逻辑位运算

“按位非~”:0返回值1,1返回值0

“按位与&”:对应位全为1则为1否则为0

“按位或|”:任何一位为1则为1否则为0

“按位异或^”:既不同时为1也不同时为0时返回1否则返回0

位移操作

“左移<<”:对数值的所有位左移指定位数,所有空位用0补充,相当于左移1位对其乘2左移2位对其乘4以此类推

“有符号右移>>”:将数值的所有位右移指定的位数,移出的位被舍弃,保留符号位,右移一位对其除二,右移两位对其除四以此类推

“无符号右移>>>”:正数-与有符号右移效果相同,负数-会出现无限大的数值

“复合赋值运算符”:位操作符与等号结合,复合赋值不会有性能方面的提升

位移操作:左移<<:;有符号右移>>:;无符号右移>>>:;复合赋值运算符:。

其他运算符

“?:”:条件运算符,简洁的if else

“typeof”:类型判断运算符

“,”:在一行语句中执行多个不同的操作

“void”:舍弃运算数的值,返回undefined作为表达式的值

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
分布式日志收集框架Flume下载安装与使用(四)
分布式日志收集框架Flume下载安装与使用(四)
4 0
分布式日志收集框架Flume下载安装与使用(二)
分布式日志收集框架Flume下载安装与使用(二)
4 0
SpringSecurity常用过滤器介绍
 本文我们来介绍下SpringSecurity中常用的过滤器及其加载的过程。
6 0
jMeter HTTP Request Defaults 的学习笔记
jMeter HTTP Request Defaults 的学习笔记
3 0
jMeter HTTP Request Defaults 的学习笔记
jMeter HTTP Request Defaults 的学习笔记
4 0
jMeter 里 CSV Data Set Config Sharing Mode 的含义详解
jMeter 里 CSV Data Set Config Sharing Mode 的含义详解
3 0
使用jMeter的csv data set config避免用户密码的硬编码
使用jMeter的csv data set config避免用户密码的硬编码
3 0
SpringSecurity实现自定义登录界面
前面通过入门案例介绍,我们发现在SpringSecurity中如果我们没有使用自定义的登录界面,那么SpringSecurity会给我们提供一个系统登录界面。但真实项目中我们一般都会使用自定义的登录界面,本文我们就来介绍下如何实现该操作。 注意:本文是在入门案例代码的基础上演示的!
4 0
SAP Commerce Cloud 里的 Media 概念简述
SAP Commerce Cloud 里的 Media 概念简述
4 0
+关注
webmirror
Good good study, day day up
101
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载