js运算符复习

    xiaoxiao2026-05-19  14

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

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

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

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

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

    条件运算(?:)

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

    字符串运算符( + )

    算术运算符

    基本运算符

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

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

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

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

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

    复合赋值运算符

    “+=”:

    “-=”:

    “*=”:

    “/=”:

    “%=”:

    自增与自减

    “++”:对唯一运算符进行递增操作(每次加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作为表达式的值

    最新回复(0)