javascript运算符

本文详细介绍了编程中常用的算术、逻辑、位运算符及运算符的优先级和结合性,帮助开发者掌握运算符的使用规则,提高代码效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、算术运算符

1.简单运算符

+ 对数字进行代数求和,如1+2

    对字符串进行连接操作,如“abc”+"def"

    将一个数值转换成字符串(数值+字符串),如23+“ab”

-  对数据进行减法,如8-2

   “取反”,如-5

   将字符串转换成数值,数值型字符串-0,如“21”-0

*  对两个运算数进行乘法运算

    同号得正、异号得负

/  对两个运算数进行除法运算

   同号得正、异号得负

% 返回两个数相除的余数

     和第一个运算数的符号相同

2.符合赋值运算符

+= 如a+=2  =>  a = a + 2

-= 、 *= 、 /=、 %=原理相同

二、自增与自减

1.功能相反

++ 递增

-- 递减

2.规则相同

运算数必须是一个变量,数组的一个元素或者对象的属性

如果运算就是非数值则运算符会将它转成数值

3.符号位置决定运算结果

运算数之前:先进行递增或者递减,再求值

运算数之后:先求值,再进行递增或递减操作

三、关系运算符

1.大小关系检测

 1)运算符

       < 如果a小于b,则返回true,否则返回false.

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

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

        > 如果a大于b,则返回true,否则返回false.

 2)操作规则

       数值与数值的比较:代数值的比较

       仅一个运算数时数值:将另一个运算数转化为数值,再进行代数值的比较

       字符串间的比较:逐字符比较他们的Unicode数值

        字符串与非数值的比较:将运算数转化成字符串比较

       运算数既不是数字也不是字符串:转为数值或字符串进行比较

       运算数无法被转化成数值或字符串:返回值为false

       与NaN的比较:返回值为false

2.等值关系检测

 1)相等比较

       操作符:== 比较两个运算数的返回值是否相等

                       != 比较两个运算数的返回值是否不相等

       类型转换:布尔值 true->1,  false->0

                           对象调用valueOf() -> 基本类型

                           字符串与数值的比较  ->字符串转为数值

       比较规则:null与undefined  相等   比较前不进行任何转换

                           NaN与任何数值都不想等,包括自身

                            对象:是否属于同一对象 ->是(==);否(!=)

 2)相同比较

      操作符:=== 比较两个运算数的返回值和数据类型是否相等

                       !== 比较两个运算数的返回值和数据类型是否不相等

       比较规则:值类型间比较  只是数据类型相同,且数值相等时才能够相同

                           值类型与引用类型比较  肯定不相同

                           引用类型间比较  比较他们的引用值

四、对象运算符

in  判断左列运算数是否为右侧运算数的成员

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

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

delete 删除指定对象的属性,数组元素或变量

. 和[] 存取对象和数组元素

{}函数调用,改变运算符优先级

五、逻辑运算符

!逻辑非  返回值 true(空字符串、0、null、NaN、undefined)

                               false(对象、非空字符串、非0数值(Infinity))

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

&& 逻辑与

       1)规则:第一个操作数是对象,返回第二个操作数

                       第二个操作数是对象,第一个操作数的值为true时返回该对象

                       两个操作数都是对象,返回第二个操作数

                       一个操作数是null,返回null

                       一个操作数是NaN,返回NaN

                       一个操作数是undefined,返回undefined

       2)特性:当且仅当两个运算数的值都是true,才返回true,否则返回false

                         短路操作  当第一个操作数的值是false则不在对第二个操作数进行求值

|| 逻辑与

       1)规则:第一个操作数是对象,返回第一个操作数

                       第一个操作数值为false,返回第二个操作数

                       两个操作数都是对象,返回第一个操作数

                       两个操作数是null,返回null

                       两个操作数是NaN,返回NaN

                       两个操作数是undefined,返回undefined

       2)特性:当且仅当两个运算数的值都是false,才返回false,否则返回true

                         短路操作  当第一个操作数的值是true则不在对第二个操作数进行求值

六、位运算符

1.基础知识

  1)类型:有符号  数值位(前31位);符号位(第32位)--->0正数;1负数

                    无符号 只能是正数,第32位表示数值,数值范围可以加大

  2)数值范围:-214748364~2147483647

  3)存储方式:正数->纯二进制存储,31位中的每一位都表示2的幂,用0补充无用位

                            负数->二进制补码存储,补码的计算步骤:a.确定该数字的非负版本的二进制表示;b.求二进制的反码,即把0变成1,1变成0;c.在二进制反码上加1

  4)当做0来处理的特殊值:NaN、Infinity

2.逻辑位运算

   1)返回值为1:按位非~  0;按位与&  对应位全为1;按位或  任何一位是1;按位异或^   既不同时为0,也不同时为1

   2)返回值为0:按位非~  1;按位与&  任何一位为0;按位或  对应位全是0;按位异或^   全为0,全为1


3.位移操作

  1)左移<< 将数值的所有位左移指定位数,所有空位用0补充,左移1位对其乘2,左移2位对其乘4,以此类推

  2)有符号右移>> 将数值的所有位右移指定位数,移出的位被舍弃,保留符号位,右移1位对其除2,右移2位对其除4,以此类推

  3)无符号右移>>>正数 与有符号右移结果相同;负数  会出现无限大的数值

4.复合赋值运算符

 位操作符与等号结合,复合赋值不会有性能方面的提升。

七、其他运算符

1)?: 条件运算符-->相当于if else

2)typeof 类型判定运算符

3),逗号在一行语句执行多个不同操作

4)void 舍弃运算数的值,返回undefined作为表达式的值

PS:运算符这章比较简单,我只是简单的将思维导图复述出来了,具体的例子练习大家根据自己的情况多尝试!下面补充一下运算符的优先级和结合性。

优先级:指运算符的运算顺序,通俗的说就是先计算哪一部分。

结合性:同一优先级运算符的计算顺序,通俗的说就是从哪个方向算起,是左到右还是右到左。






  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值