JavaScript起步(七-操作符)| 一起学系列

123 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情

操作符

1) 算术运算符

  • 非正常情况1

    • 有特殊值字面量参与的运算

    • NaN参与的运算:得到的结果都是NaN

    • Infinity参与的运算,视情况而定:Infinity % 5 =NaN;5 / Infinity = 0;5 % Infinity =5;Infinity – Infinity = NaN;Infinity / Infinity = NaN;Infinity % Infinity =NaN

    • 工作中不会使用特殊值运算,没有实际应用的意义,但是要了解,以防面试遇到

  • 非正常情况2(其他类型的数据参与数学运算)

    • 有字符串参与的+运算:+号变为连字符前后连接成整体字符串

    • 隐式转换:除了字符串参与的+运算,其他情况下,所有其他数据类型参与数学运算时,计算机暗中将其他数据类型先自动转换成数字类型,再参与运算,这个过程中不需要使用parseInt()、Number()等方法,过程是暗中进行,这就是一个隐式转换的过程

    • 其他的数据类型会隐式转换为数字类型:

      • 对应数字:纯数字字符串会转为对应的数字“123”→123

      • 转换为1:true

      • 转换为0:false、null、“”空字符串、空白字符串

      • 转换为NaN:undefined、非空非纯数字字符串

2) 比较运算符

  • 也叫做关系运算符。一个比较运算符comparison operator比较它的操作数并返回一个布尔类型值。运算结果要么是true,要么是false

        ===       全等,不光判断值相等,还要判断数据类型相等

        !==        不全等,与全等完全相反

  • 非正常情况1

        - 特殊值参与比较运算

        - NaN参与:不等于和不全等于结果是true,其他的都得到false

        - Infinity参与的运算,视情况而定。Infinity-Infinity=NaN Infinity==Infinity和        Infinity===Infinity为true

  • 非正常情况2(其他数据类型参与比较运算,但排除字符串与字符串的比较)

        - 其他数据类型也会隐式转换为数字参与比较:“123”→123   true→1  false→0        null→0   undefined→NaN  “”→0      “abc”→NaN

        - null的判断比较特殊:null与0判断时,相等判断为false,>=和<=判断为true

        - null==undefined

  • 非正常情况3(字符串与字符串比较)

    • 不会发生隐式转换为数字,而是比较两个字符串的Unicode编码顺序

    • 字符编码顺序:从前往后0-9,A-Z,a-z,前面的小于后面的

    • 比较时,不关心两个字符串的长度,从第一个字符串开始比较,一次往后顺延        比较,直到比较出大小,就不再往后比较

  • 比较运算符的比较顺序

    • 从前往后进行比较,前面得出的结果再和后面的比较:3>2>1 结果为false,3>2结果为true,true和1比较,结果为相等

3) 逻辑运算符

  • 逻辑运算符常用于布尔类型值之间,当操作数都是布尔值时,返回值也是布尔值

  • && 逻辑与运算符 “且”:false&&false结果为false

  • ||     逻辑或运算符:false||false结果为false

  • !   逻辑非运算符:!!!!!!false,从最近的开始运算,两个非相抵消(抵消时,从              左往右)

  • 非正常情况1(隐式转换为布尔值的规律)

    • 转为false:NaN、0、“”、空字符串、null、undefined

    • 转为true:非0、非NaN数字、非空字符串

    • 当它们用于非布尔值的时候,返回值就可能是非布尔值,(都只需要判断a)

    • 即:(逻辑与a&&b)如果a能被转换为false,那么返回a;否则,返回b

      (逻辑或a||b)如果a能被转换为true,那么返回a;否则,返回b

    • 非运算的运算结果只能是true或false

  • 逻辑运算符运算顺序

    • 同种运算符从前往后运算(非为最近的开始运算)

    • 三种运算符的运算顺序:!>&&>||

4) 赋值运算符

+=   加等于;-=  减等于;*=   乘等于;/=   除等于;%=  取余等于;++     递加;--    递减

5) 一元运算符

  • ++或—符号可以写在变量前后:

    • a++:在参与程序过程中使用的原始没有加1的值,使用完后第二次用变量时,a用的就是加1后的新值。先参与,后自加。console.log(a++)输出的是a的值

    • +aa:参与程序过程中使用a加1后的新值,使用完后第二次用a变量时,a用的也是加1的新值。先自加,后参与。console.log(++a)输出的是a+1的值

6) 运算优先级(也叫做综合运算顺序)

1.()优先级最高

2.一元运算符:++ -- !

3.算术运算符:先*/%后+-

4.关系运算符:>  >=  <  <=

5.相等运算符:==  !=  ===  !==

6.逻辑运算符:先&&后||

7.赋值运算符