04.JavaScript运算符

216 阅读3分钟

1.算数运算符

1.数学运算符也叫算术运算符,主要包括加、减、乘、除、取余(求模)。

2.运算符号:

1 + 求和 加法

2 - 求差 减法

3 * 求积 乘法

4 / 求商 除法

5 % 求余 取模 (除法运算 获取除法元素后 剩下的整数)

3.优先级:先乘除后加减,有括号先算括号里面的

1.同时使用多个运算符编写程序时,会按着某种顺序先后执行,我们称为优先级。 JavaScript中 优先级越高越先被执行,优先级相同时以书从左向右执行。

2.乘、除、取余优先级相同

3.加、减优先级相同

4.乘、除、取余优先级大于加、减

5.使用 () 可以提升优先级

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

    <script>
    //  算法运算符  加减乘除  求余  取模
        let num1 = 10;
        let num2 = 2 ;

        // 加法
        console.log(num1 + num2); // 12
        // 减法
        console.log(num1 - num2); // 8
        // 乘法
        console.log(num1 * num2);// 20
        // 除法
        console.log(num1 / num2);// 5

        // 求余=取模  获得整数
        // 除法运算  获取除法元素后  剩下的整数    列如:10/3(取值为  1)
        console.log(10 % 5);   //  0  10可以整除5  所以取值为0
        console.log(10 % 3);   //  1  10除不尽3  所以取值余数 1

        // 如果一个类出现多个算数运算符
        // 先乘除后加减  如果有括号 就先算括号
        console.log(1 + 1 * 2);
        console.log((1 + 1) * 3);
        // 如果一行类  确实有很多歌 算数运算符 都建议按照自己的想法来加括号
        console.log(1 + (1 +2 + 3) * 2 / 3 + (( 4 + 10 ) / 2 ));
        
    </script>
</body>
</html>

4.拓展:圆的面积计算 pi * r * r(π*半径的平方)

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1.0,maximum-scale=1,minimum-scale=1,user-scalable=no"
    />
    <title>02-圆的面积.html</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
    </style>
  </head>
  <body>
    <script>
      // π *  r的平方

      // 在js中 通过什么来代表 π
      // Math.PI d

      // console.log(Math.PI);

      let r = prompt('请输入圆的半径');

      console.log('圆的面积是: ' + Math.PI * r * r);
    </script>
  </body>
</html>

2.赋值运算符

1.对变量进行赋值的运算符

2.运算符号:

1.+=

2.-=

3.*=

4./=

5%=

3.作用:

1.已经学过的赋值运算符:= 将等号右边的值赋予给左边, 要求左边必须是一个容器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 方法一:
   /*      let num = 1 ;
        num = num + 1
        console.log(num);    //1 
    */
   /*  
        // 方法二:
        let num = 1;
        num  += 665;
        console.log(num);  //666
    */

        let num = 10 ;

        num -= 2 ;
        // num += 2 ;
        // num *= 2 ;
        // num /= 2 ;
        console.log(num);

    </script>
</body>
</html>

3.一元运算符

1.自增

1.作用:让变量的值+1

1.前自增 ++i 先自增后运算

2.后自增 i++ 先运算后自增

2.自减

1.作用:让变量的值 -1

2.前自减 --i 先自减后运算

3.后自减 i-- 先运算后自减

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let i = 1
        // 前置 自增
        // console.log(++i + 2);     //先计算自增1+i  在计算自增后的i+2结果为4

        // 后置 自增
        console.log(i++ + 2);
        // 后置自增   先计算i+2   在计算i++
        // a+b=c i后置自增a 你先得到结果c了  在计算a++只不过我们没有次输出打印了它而已



              // let i =1;

      // i++; // 就是做了一个加一的操作 很好理解!!
      // ++i; // 就是做了一个加一的操作 很好理解!!
      // i++; // 就是做了一个加一的操作 很好理解!!
      // ++i; // 就是做了一个加一的操作 很好理解!!

      // 在工作中,基本都是  i++ 或者 ++i 独立使用
      // 不喜欢 故意的人为制作那些 代码 抽象和很难理解的场景
      // 技术出现是用来 解决实际问题,就是一个工具,不会故意的把工具弄得很复杂

      // 初学者来说,一些不好的教程 就会 误导大家,故意或者无意拿这些题目来
      // 测试我们  完全没有必要

      // 建议 在初学者阶段 我们要故意避开这些东西!!


      

 /*      let i = 5;

console.log(--i); //  4

console.log(i--); //  打印的结果是 4

console.log(i); // 3  */
    </script>
</body>
</html>

4.比较运算符

1.作用:比较两个数据大小、是否相等

2.比较运算符号:

1.> : 左边是否大于右边

2.<: 左边是否小于右边

3.>=: 左边是否大于或等于右边

4.<=: 左边是否小于或等于右边

5.==: 左右两边是否相等

6.===: 左右两边是否类型和值都相等

7.!==: 左右两边是否不全等

8.比较结果为boolean(布尔)类型,即只会得到true或false

3.细节:

1.字符串比较,是比较的字符对应的ASCII码

  1. 从左往右依次比较

  2. 如果第一位一样再比较第二位,以此类推

  3. 比较的少,了解即可

  4. 图片不会上传 自己去百度

2.NaN不等于任何值,包括它本身

3.尽量不要比较小数,因为小数有精度问题

4.不同类型之间比较会发生隐式转换

1.最终把数据隐式转换转成number类型再比较

2.所以开发中,如果进行准确的比较我们更喜欢 === 或者 !==

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1.0,maximum-scale=1,minimum-scale=1,user-scalable=no"
    />
    <title>05-比较运算符.html</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
    </style>
  </head>
  <body>
    <script>
      //  比较后的结果 其实是一个 bool 类型 true , false

      console.log(3 > 10); // 打印什么结果 false
      console.log(3 > 1); //  true

      console.log(3 < 10); //  true
      console.log(3 < 3); // false

      console.log(3 <= 3); // 小于或者等于 3

      // 判断是否相等 要用 两个 "="  号
      console.log(3 == 2); // false

      // let num = 4;
      // num = 5; // 只写一个等于号 赋值
      // console.log(num == 5); // 两个等于号才是判断

      // 判断 3 不等于 5
      // console.log(3!=5); // !=  不等于

      // 拿数字和字符串比较
      console.log(3 == '3'); // true  因为两个 == 只会判断值 而不会判断类型

      console.log(3 === '3'); //  flase  3个等于号  既要判断类型 也要判断值

      console.log(3 === 3); // true

      console.log(3 != 3); // false
      console.log(3 != '3'); // false

      console.log(3 !== '3'); // true

      console.log('============');

      //  比较 一般都是对数字做比较
      //  对于字符串做比较 更多是判断两者是否相等
      // console.log('A' === 'B');

      // 如果拿字符串去 大小的比较,判断的标准是
      // 先把字符串 拿去做 转数字
      // 转完了数字之后, 才根据数字做大小比较!

      console.log('A' > 'B'); // 81 > 82   了解即可 !!!
      console.log('高航' > '彭炎');

      // NaN = A    ||    NaN = B
      console.log(NaN === NaN); // false 不能以为 两者代码一样就相等 (不是一个数字    )

      // js 处理小数 有问题 后面会补充 精度的问题!!
      console.log(0.4 + 0.2 === 0.6);

      // 类型转换
      // console.log(4 > '3');
      console.log(4 > Number('3'));
    </script>
  </body>
</html>

5.逻辑运算符

1.逻辑运算符的介绍

逻辑运算符用来解决多重条件判断

2. 逻辑运算符的使用

1.逻辑符号

1.&&

1.名称:逻辑与

2.读法:并且

3.特点: 符号两边都为true 结果才为true

4.口诀:一假则假

2.||

1.名称:逻辑或

2.读法:或者

3.特点: 符号两边有一个true就为true

4.口诀:一真则真 两假则假

3. !

1.名称:逻辑非

2.读法:取反

3.特点: true变false false变true

4.口诀:真变假 假变真

5.可以反复套娃使用

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1.0,maximum-scale=1,minimum-scale=1,user-scalable=no"
    />
    <title>06-逻辑运算符.html</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
    </style>
  </head>
  <body>
    <script>
      /*
      有个数据  大于5 而且 小于 10
       */
      let num = 6;

      console.log(num > 5 && num < 10); // true

      console.log(num > 5 && num < 4); // 一假则假  false

      // 我有钱包    要不 等于 1块钱  要不就 等于  0

      let money = 10;
      // 一真则真
      console.log(money === 1 || money === 0); // 只要满足了随便一个条件 那么这个钱包就是我的

      let gender = true; // true 男生

      console.log(gender); // true 
      console.log((!gender));  // 取反了 false 
    </script>
  </body>
</html>

3.逻辑运算符里的短路

1.短路只存在于 && 和 || 中,当满足一定条件会让右边代码不执行

1.&& 左边为false就短路

2.|| 左边为true就短路

2.原因:通过左边能得到整个式子的结果,因此没必要再判断右边

3.运算结果:无论 && 还是 || ,运算结果都是最后被执行的表达式值,一般用在变量赋值

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1.0,maximum-scale=1,minimum-scale=1,user-scalable=no"
    />
    <title>07-短路运算.html</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
    </style>
  </head>
  <body>
    <script>
      // 一假则假  && 左边为false 右边就不再去执行
      // console.log(2 > 10 && 1 < 3 && 3 > 1 && 9 > 5 && 5 < 10 && 8 > 2);

      // 工作中常见的写法
      // 如果今天还下雨 那我就去吃海鲜
      //   不下雨 不去吃海鲜了
      // let rain = false;

      // 左边成立了 右边才会去执行
      // rain && console.log('下雨 去吃海鲜');

      // 逻辑或 一真则真
      // 只要 || 左边 成立了为true,右边就不再去执行
      // console.log(100 > 3 || 2 > 6 || 9 > 10 || 10 > 11 || 13 > 20);

      // 工作中 常用的技巧
      // 如果下雨,那么我就不玩了
      let rain = false;
      rain || console.log('去玩');

      // 两个短路运算  逻辑或 和 逻辑与 
      //   工作中的语法  逻辑与来说   满足了 就去执行
      //   工作中的语法  逻辑或来说   不满足了 就去执行
    </script>
  </body>
</html>

6.运算符优先级:

  1. 小括号 ()
  2. 一元运算符 ++ -- !
  3. 算数运算符 先*/+-后
  4. 关系运算符 > >= < <=
  5. 相等运算符 == != === !==
  6. 逻辑运算符 先&& 后||
  7. 赋值运算符 =
  8. 逗号运算符 ,