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作为表达式的值

目录
相关文章
|
3月前
|
JavaScript 前端开发 Java
JavaScript基础语法(运算符)
JavaScript基础语法(运算符)
32 0
|
4月前
|
JavaScript 前端开发 开发者
从0开始学习JavaScript--JavaScript 表达式与运算符
JavaScript中的表达式和运算符是构建逻辑、进行计算的基础。本文将深入研究JavaScript中各类表达式,包括算术表达式、关系表达式、逻辑表达式,以及运算符的使用方法,并通过丰富的示例代码来帮助读者更全面地了解和运用这些概念。
|
4月前
|
JavaScript 前端开发
JavaScript变量、数据类型、运算符及类型转换
JavaScript变量、数据类型、运算符及类型转换
40 0
|
1月前
|
JavaScript
js开发:请解释什么是ES6的扩展运算符(spread operator),并给出一个示例。
ES6的扩展运算符(...)用于可迭代对象展开,如数组和对象。在数组中,它能将一个数组的元素合并到另一个数组。例如:`[1, 2, 3, 4, 5]`。在对象中,它用于复制并合并属性,如`{a: 1, b: 2, c: 3}`。
12 3
|
1月前
|
JavaScript 前端开发 程序员
编程笔记 html5&css&js 074 Javascript 运算符
编程笔记 html5&css&js 074 Javascript 运算符
|
3月前
|
JavaScript 前端开发
什么是 JavaScript 中的 Spread 运算符
什么是 JavaScript 中的 Spread 运算符
28 0
|
3月前
|
JavaScript 前端开发
JS-基础:JavaScript运算符 个人总结
JS-基础:JavaScript运算符 个人总结
20 0
|
3月前
|
前端开发 JavaScript 算法
JavaScript不常见但好用的运算符
JavaScript不常见但好用的运算符
|
3月前
|
存储 前端开发 JavaScript
【面试题】Javascript的这些运算符,你都都掌握哪些?
【面试题】Javascript的这些运算符,你都都掌握哪些?
|
3月前
|
前端开发 JavaScript
【Javascript保姆级教程】运算符
【Javascript保姆级教程】运算符