九、JS中的运算符

本文详细讲解了运算符的分类,包括算数运算符、赋值运算符、自增自减运算符、关系运算符和逻辑运算符,以及它们的优先级、隐式类型转换和特殊行为。重点介绍了运算符在不同情况下的行为,如加减运算中的数值转换,以及NaN在运算中的处理。
摘要由CSDN通过智能技术生成

1、运算符两侧的操作数的数据类型一定是一样的,如果不一样,会发生隐式类型转化
2、NaN与任何数据计算都是NaN,在关系运算符中任何数据和NaN进行比较,结果都是false

1、运算符从功能上分类:

  • 1、算数运算符:+ - * / %

    • 优先级:* / % 高于+ -,如果优先级一样,则从左到右计算(左结合性)
      • 加号运算符
        • 任何非数值(非字符串)的数据在参与加法运算之前,都会自动隐式转化成数值类型,再参与计算(true→1、null→0)
        • 任何数据和字符串相加,+就变成了字符串拼接运算符,不再是加号
      • 减号运算符
        • 任何非数值(非字符串)的数据在参与减法运算之前,都会自动隐式转化成数值类型,再参与计算
        • 任何数据和字符串相减,都会尝试把字符串转化成数字,再进行运算
      • 乘号运算符
        • 同减号运算符
      • 除号运算符
        • 1 / null //Infinity(无穷大,null转化成0)
      • 除余运算符
        • 3 % 0 //NaN
        • 10 % -3 //1
        • -10 % 3 //-1
        • 在除余时,会对参加运算的数先取绝对值,最后的结果与被除数的正负值相同。
  • 2、赋值运算符:=、+=、-=、*= 、/=、%=(从后向前计算)

    • 优先级低于算术运算符
    • = 有副作用,整体也有一个值,是左值,c = 110,c是110,110是110,c=110也是110
  • 3、自增自减运算符:++、- -(一元运算符)

    • ++在前和++在后在整体上的值是有区别的,但操作数的值肯定加1
    • a++整体的值是一个旧值,没有加1的值,操作数(a)的值加1
    • ++a整体的值是一个新值,加1后的值,操作数(a)的值加1
  • 4、关系运算符(>、<、>=、<=、==、===、!=、!==)

    • 对非数值类型的数据,会先转换成数值类型
    • 任何数据和NaN比较,结果都是false
    • 运算符两侧操作数的数据类型要一致,如果不一致,会发生类型转化
    • undefined会尝试转化成number,und转成number结果是NaN
    • 字符串的比较会转成ASCLL码
  • 5、逻辑运算符(逻辑与&&、逻辑或||、逻辑非!)

    • 逻辑与:只有两个操作数,都为true,结果才为true
    • 逻辑或:只要有一个操作数为true,结果就为true
    • 逻辑非:一元运算符,如果true,逻辑非后,就为false,如果是false,逻辑非后,就为true。
    • 0会隐式转化成false,但是整体的值不是转化后的值,整体的值是转化之前的值,会输出0而不是false
    • 使用逻辑运算符进行逻辑运算时,操作数如果不是布尔值,会发生隐式类型转化,转化成布尔值(undefined转化成false)
    • 如果第1个操作数可以决定整体的值,那么就不会再运算第二个操作数
    • 如果第1个操作数就决定了整体的值,那么最终的结果就是第1个操作数的值
    • 如果第1个操作数不能决定整体的值,那么整体的值就是第2个操作数的值

2、运算符从操作数的个数分类:

一元:逻辑非、+“123”
二元:+、- 、* 、
三元:?:(表达式?结果A:结果B)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值