03. JavaScript运算符

127 阅读2分钟

一.算术运算符

  • 算术运算符用在数学表达式中, 它的使用方式和数学中也是一致的.
  • 算术运算符是对数据进行计算的符号
  • 可以直接对数据进行操作, 也可以操作变量指向的数据.
运算符运算规则范例结果
+正号+3, 和直接写3一样3
+加法2 + 35
+连接字符串‘中’+ ‘国’‘中国’
-减法2 - 3-1
*乘法2 * 36
/除法5 / 22.5
%取余数5 % 21
++自增3++或++34
--自减3--或--32

image-20210511201319751

二.前置后置运算符

  • JavaScript支持:自增++和自减--,通常都是用在数字变量上
  • 自增:++
    • 分为前置自增和后置自增
    • image-20210512004220023
  • 自减:--
    • 分为前置自减和后置自减
    • image-20210512004257754
  1. ++,--:在前,先自增(自减),再参与运算
  2. ++,--:在后,先运算,在自增(自减)

三.赋值运算符

  • 赋值运算符主要是给某个变量进行赋值
    • 赋值运算符是算术运算符和赋值的一种简便写法.
    • 比如 a = 3; a = a + 1;
    • 第二句可以写成 a += 1;
运算符运算规则范例
=赋值a = 55
+=加后赋值a = 5, a += 27
-=减后赋值a = 5, a -= 23
*=乘后赋值a = 5; a *= 210
/=除后赋值a = 5; a /= 22.5
%=取余后赋值a = 5; a %= 21

四.比较运算符(比较运算符)

  • 比较运算符,又叫关系运算符
    • 它是用来判断两个操作数的大小关系及是否相等关系的
    • 结果是布尔类型(bool): True或者False
    • 比较运算符经常用在后面学习的if/while语句中
    • 学习if语句的使用
  • ==关系运算符的结果为布尔值==
运算符运算规则范例结果
==相等4 == 3false
!=不等于4 != 3true
大于4 > 3true
<小于4 < 3false
>=大于等于4 >=3true
<=小于等于4 <= 3false

4.1 相等

一.关系运算符:> < >= <= != == = == !==

1.关系运算符的结果是布尔值

2.对于数值类型:关系运算符直接运算,返回结果

对于非数值类型:自动转换为数值类型,再进行运算

2.1 如果比较运算符两边都是非数值情况,则不会转换为数值,而是比较字符串的字符unicode编码

二.相等运算符

1.比较数值型时,返回正常的true或false

2.比较一个为数值型,一个为非数值型时,会把非数值型的转换为数值型,再进行运算

3.两个非字符型的比较,会先转换为数值型,再比较

4.undefined衍生自null,所有两个值比较为true

5.NaN不喝任何值相等包括它自己

判断变量是否为NaN的方法isNaN();

相等操作符对于不同类型的值,进行的比较如下图所示:

image-20210512094815042

4.2 全等

**全等操作符比较两个值是否相等,两个被比较的值在比较前都不进行隐式转换。**如果两个被比较的值具有不同的类型,这两个值是不全等的。否则,如果两个被比较的值类型相同,值也相同,并且都不是 number 类型时,两个值全等。最后,如果两个值都是 number 类型,当两个都不是 NaN,并且数值相同,或是两个值分别为 +0 和 -0 时,两个值被认为是全等的。

var num = 0;
var obj = new String("0");
var str = "0";
var b = false;

console.log(num === num); // true
console.log(obj === obj); // true
console.log(str === str); // true

console.log(num === obj); // false
console.log(num === str); // false
console.log(obj === str); // false
console.log(null === undefined); // false
console.log(obj === null); // false
console.log(obj === undefined); // false

五.逻辑运算符

  • 逻辑运算符,它是用于将多个条件放在一起进行运算的

    • 逻辑运算符的运算结果也是Boolean类型: true/false

    • 逻辑运算符也应用if/while的判断句中, 并且是多个条件时会使用到

      运算符运算规则范例结果
      &&与: 同时为真false && Truefalse
      ||或: 一个为真false or fruetrue
      !非: 取反!falsetrue
  • 逻辑与补充:(了解)

    • 逻辑与运算符可以应用于任何数据类型,且不一定返回布尔值。
    • 对于非布尔值运算,会先将非布尔值转换为布尔值。
  • 逻辑或补充:(了解)

    • 逻辑或运算符可以应用于任何数据类型,且不一定返回布尔值。
    • 对于非布尔值运算,会先将非布尔值转换为布尔值。
  • 逻辑非 !

    • 1.对布尔值进行逻辑运算,true变false,false变true
    • 2.对一个值进行两次非运算,值不变
    • 3.对非布尔值进行非运算,会将其先变成布尔值,再取反
      • ==3.1我们可以根据这一原理,将别的类型转换为布尔型:就是对别的数据类型进行两次非操作,原理其实跟Boolean()相同==
  • 逻辑与 &&

    • 1.布尔类型进行与运算时:两边都是true,结果为true;只要有一个false结果就为false
    • ==2.JS中的“与”属于短路与:第一个值为false,则不会看第二个值==
  • 逻辑或 ||

    • 1.两个值中只要有一个true,就返回true;如果两个值都为false,才返回false
    • ==2.JS中的“或”属于短路或:只要第一个值为true,则不会看第二个值==
  • ==非布尔值的与或运算==非布尔值的与运算:先将非布尔值转换为布尔值,再进行运算,最后返回原值

    • ==与运算==

      • 如果第一个值是true,则返回第二个值

      • 如果左右两边的结果有一个false,则返回前一个false的值

      • //非布尔值的逻辑与
        console.log(1&&2);//2
        console.log(2&&0);//0
        console.log(NaN&&5);//NaN
        console.log(""&&6);//""
        
    • ==或运算==

      • 如果第一个值是true,则返回第一个值

      • 如果第一个值是false,则返回第二个值

      • console.log(2||0);//2
        console.log(NaN||2);//2
        console.log(NaN||0);//0
        
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script type="text/javascript">
/* 
一.JS中的三种逻辑运算符:
1.逻辑非 !
  1.对布尔值进行逻辑运算,true变false,false变true
  2.对一个值进行两次非运算,值不变
  3.对非布尔值进行非运算,会将其先变成布尔值,再取反
    3.1我们可以根据这一原理,将别的类型转换为布尔型:就是对别的数据类型进行两次非操作,原理其实跟Boolean()相同
2.逻辑与:&&
  1.布尔类型进行与运算时:两边都是true,结果为true;只要有一个false结果就为false
  2.JS中的“与”属于短路与:第一个值为false,则不会看第二个值
3.逻辑或:||
  1.两个值中只要有一个true,就返回true;如果两个值都为false,才返回false
  2.JS中的“或”属于短路或:只要第一个值为true,则不会看第二个值
二.非布尔值的与或运算
  1.与运算
    1.1非布尔值的与运算:先将非布尔值转换为布尔值,再进行运算,最后返回原值
    1.2 如果第一个值是true,则返回第二个值
    1.3 如果左右两边的结果有一个false,则返回前一个false的值 
  2.或运算
   2.1如果第一个值是true,则返回第一个值
   2.2 如果第一个值是false,则返回第二个值   
*/
//短路与
//true&& alert("我弹出来了!");
//false&&alert("我弹不出来了!");
/* 
//非布尔值的逻辑与
console.log(1&&2);//2
console.log(2&&0);//0
console.log(NaN&&5);//NaN
console.log(""&&6);//"" 

*/
//非布尔值的逻辑或
console.log(2||0);//2
console.log(NaN||2);//2
console.log(NaN||0);//0
  </script>
</head>
<body>
  
</body>
</html>

六.三元运算符

三元运算符:表达式 ?A:B;

语法: * 表达式? 值1:值2; * 判断表达式的值,如果是true则取值1,如果是false则取值2;

七. 字符串连接符

==+:如果运算的数据只包含字符串,那么结果就是字符串(会强制转换)==

八.运算符的优先级

image-20210512103324720

九.位运算符