JavaScript运算符

目录

1.运算符

2.算术运算符

2.1算术运算符概述

 2.2 浮点数的精度问题

2.3自增和自减运算符(一元运算符)

2.3.1自增和自减运算符概述

 2.3.2自增运算符

2.3.3自增自减总结

3.比较运算符

3.1比较运算符概述

 3.2特殊的比较

4.逻辑运算符

4.1逻辑运算符概述

4.2逻辑中断(短路逻辑)

5.赋值运算符

 6.条件运算符(三元或三目运算符)

 6.运算符的优先级


1.运算符

  • 定义:运算符(operator)也被称为是用于实现赋值、比较和执行算术运算等功能的符号
  • JavaScript中常用的运算符有:
    • 算术运算符
    • 比较运算符(关系运算符)
    • 逻辑运算符
    • 赋值运算符
    • 条件运算符

2.算术运算符

2.1算术运算符概述

概念:算术运算使用的符号,用于执行两个变量或值的算术运算。

运算符描述实例
+10+10=20
-20-10=10
*10*20=200
/10/20=0.5
%取余(取模),得到除法的余数9%2=1
++自增运算符(只能配合变量使用

num=1  num++  num=2

--自减运算符(只能配合变量使用num=1  num--  num=0
**指数运算符x**y  x的y次幂

 2.2 浮点数的精度问题

浮点数值的最高精度是17位小数,但在进行算术计算时其精确度远远不如整数。

var result=0.1+0.2;//结果不是0.3,而是0.30000000000000004

console.log(0.07*100);//结果不是7,而是7.000000000000001

即:不要直接判断两个浮点数是否相等

2.3自增和自减运算符(一元运算符)

2.3.1自增和自减运算符概述

  • 如果需要反复给数字变量添加或减去],可以使用自增或自减运算符来完成。
  • 在JavaScript中,自增(+ +)和自减(- -)在变量前面时,我们可以称为前置运算符,在变量后面时,我们可以称为后置运算符。
  • 注意:递增和递减运算符必须和变量配合使用。

 2.3.2自增运算符

  • 前置自增运算符

        ++num前置递增,就是自加1 ,类似于num = num + 1 ,但是++ num写起来更简单。

var num = 10;
console(++num + 10);// 21

         口诀:先自加,再赋值

  • 后置自增运算符

        num ++后置递增,就是自加1 ,类似于num = num + 1 ,但是num ++写起来更简单。

var num = 10;
console.log(10 + num++);// 20

 使用口诀:先赋值(返回原值),后自加

2.3.3自增自减总结

  • 运算时的顺序问题
不参与别的运算前置与后置没有区别
参与别的运算前置先自增再参与运算
后置先原值运算,再自加
  • 前置递增和后置递增运算符可以简化代码的编写,让变量的值+1比以前写法更简单
  • 开发时,大多使用后置递增/减,并且代码独占一行,例如:num ++;或者num--

3.比较运算符

3.1比较运算符概述

  • 概念:比较运算符(关系运算符)是比较两个值,比较运算后,会返回布尔值(true / false )作为比较运算的结果
  • 运算符名称说明案例
    <小于号1<2
    >大于号2>1
    <=小于等于号1<=2
    >=大于等于号3>=2
    ==等于(会转数据类型)3=='3'
    !=不等于3!=4
    ===全等(不会转数据类型)5===5
    !==不全等5!=='5'

 3.2特殊的比较

  1. 有字符串参与的比较
    • 一边是数字,一边是数字字符串时会转数据类型
    • 两边都是字符串时,比较ascii码,并且一位一位比较
      console.log('18'>9);//true
      console.log('18'>'9');//false
  2. 几个特殊的值比较
    • NaN   和谁都不等
      console.log(NaN==NaN);//false*****
    • undefined   一般不进行比较
      console.log(undefined>-1);//false
      console.log(undefined==null);//true*****
    • null    当中间是==时不会转数据类型
      console.log(null>-1);//true
      console.log(null==0);//false*****
      console.log(null=='');//false
    • ''    ''空串隐式转换成了0
      console.log(''==false);//true*****
  3. 数组的比较
    console.log([]==[]);//false
    console.log([]!=[]);//true
    console.log(![]==[]);//true
  4. 对象的比较
    console.log({}=={});//false
    console.log({}!={});//true
    console.log(!{}=={});//false

4.逻辑运算符

4.1逻辑运算符概述

概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值(true,false)。后面开发中经常用于多个条件的判断

运算符名称说明描述
a&&b 逻辑与and() 如果 a 能被转换为 false,那么返回 a;否则,返回b。因此,&&用于布尔值时,当操作数都为 true 时返回 true;否则返回 false.
a||b 逻辑或or() 如果a 能被转换为 true,那么返回 a;否则,返回b。因此,|| 用于布尔值时,当任何一个操作数为 true 则返回 true;如果操作数都是 false 则返回 false。
!a 逻辑非(取反)not() 如果操作数能够转换为 true 则返回 false;否则返回 true。

不过实际上&&||返回的是一个特定的操作数的值,所以当它用于非布尔值的时候,返回值就可能是非布尔值,而是原值。

consol.log(undefined&&'hello');//undefined
console.log(2&&true);//true
console.log(2&&3);//3

console.log([]||'hello');//[]
console.log(null||'hello'+2);//hello2

4.2逻辑中断(短路逻辑)

  • 逻辑与&&:a&&b

    如果 a 能被转换为 false,那么返回 a;否则,返回b。

    false&& anything // 被短路求值为 false,anything部分不会进行运算求值

  • 逻辑或  || :a ||  b

    如果 a 能被转换为 true,那么返回 a;否则,返回b。

    true || anything // 被短路求值为 true,anything部分不会进行运算求值

5.赋值运算符

  • 概念:将它右边操作数的值赋给它左边的操作数
运算符名称简写操作符含义
=x=yx=y
+=x+=y

x=x+y

-=x-=yx=x-y
*=x*=yx=x*y
/=x/=yx=x/y
%=x%=yx=x%y
  •  举例:
var a=10;
a += 5;//15 相当于a = a + 5;
a -= 5;//5  相当于a = a - 5;
a *= 5;//50 相当于a = a * 10;
  • =、== 与 === 
    =赋值运算符
    ==比较运算符,如果两边操作数相等时返回 true。有隐式转换
    ===比较运算符,两边操作数相等且类型相同时返回 true。无隐式转换

 6.条件运算符(三元或三目运算符)

  • 概念:是 JavaScript 中唯一需要三个操作数的运算符。运算的结果根据给定条件在两个值中取其一。
  • 语法为:

    条件表达式?条件成立返回值1:条件不成立返回值2

  • 如果条件为真,则结果取值 1。否则为值 2。你能够在任何允许使用标准运算符的地方使用条件运算符。
  • 举例
    var status = age >= 18 ? "adult" : "minor";
    //age>=18返回'adult',否则返回'minor'

 6.运算符的优先级

  • 概念:运算符的优先级,用于确定一个表达式的计算顺序。在你不能确定优先级时,可以通过使用括号显式声明运算符的优先级。
  • 下表列出了描述符的优先级,从最高到最低。
    ()圆括号的优先级最大
    一元运算符++(++a优先级小于a++)、--、!
    算术运算符**(幂)、*、/、%、+、-
    比较运算符<、<=、>、>=、==、!=、===、!==
    逻辑运算符&&、||
    三元运算符?:
    赋值运算符=、+=、-=、*=、、/=、%=
    展开运算符...
    逗号运算符,
    特别的:一元运算符里面的逻辑非优先级很高,逻辑与比逻辑或优先级高
  • 也可参照下表,下表按从最高到最低的优先级列出JavaScript运算符。具有相同优先级的运算符按从左至右的顺序求值。

    运算符

    描述

    . [] ()

    字段访问、数组下标、函数调用以及表达式分组

    ++ -- - ~ ! delete new typeof void

    一元运算符、返回数据类型、对象创建、未定义值

    * / %

    乘法、除法、取模

    + - +

    加法、减法、字符串连接

    > >>>

    移位

    < >= instanceof

    小于、小于等于、大于、大于等于、instanceof

    == != === !==

    等于、不等于、严格相等、非严格相等

    &

    按位与

    ^

    按位异或

    |

    按位或

    &&

    逻辑与

    ||

    逻辑或

    ?:

    条件

    = oP=

    赋值、运算赋值

    ,

    多重求值
  • 22
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值