运算符

134 阅读4分钟

运算符

一、算术运算符

1.定义

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

代码如下:

  <body>
    <script>
      let num1 = 10;
      num2 = 2;
      //  加法
     /*  console.log(num1 + num2);
      //  减法
      console.log(num1 - num2);
      //  乘法
      console.log(num1 * num2);
      // 除法
      console.log(num1 / num2); */
      // 取余%
      console.log(num1 % num2);/* 结果=0 */
      console.log(20 % 2); /* 结果=0 */
      console.log(20 % 4); /* 结果=0 */
      console.log(20 % 3); /* 结果=2*/
      console.log(10 % 3); /* 结果=1 */
      console.log(30 % 3); /* 结果=0 */
      console.log(40 % 3); /* 结果=1 */
      console.log(50 % 3); /* 结果=2 */
      console.log(60 % 3); /* 结果=0 */
      console.log(70 % 3); /* 结果=1*/
    </script>
  </body>

取余运算符开发中会用来判断某个数字是否能被整除

小试牛刀案例

需求:对话框中输入圆的半径,算出圆的面积并显示到页面

js中的π写法 Math.PI

<script>
    let r =prompt('请输入圆的半径')
    console.log('圆的半径是' + Math.PI * r * r)
  </script>

优先级

  1. 先乘除取余再加减
  2. 有括号的先算括号,可以加()提升优先级
  3. JavaScript中 优先级越高越先被执行,优先级相同时以书从左向右执行

二、赋值运算符

1.定义

赋值运算符:对变量进行赋值的运算符

注意点:将等号右边的值赋予给左边, 要求左边必须是一个变量

赋值运算符的写法就是为了简化代码

2.代码如下

  <script>
      /* let num1 = 10;
      num1 = num1 + 1;
      console.log(num1); */

      let num1 = 10;
      /*    // 简化加法写法
      num1 += 1; */
     /*  简化减法写法
      num1 -= 1; */
     /*  简化乘法写法
      num1 *= 1; */
     /* 简化除法写法
      num1 /= 1; */
      // 简化取余写法
       num1 %= 1; 
      console.log(num1);
    </script>

三、一元运算符

1.定义

只需要一个表达式就可以运算的运算符叫一元运算符

一元运算符的写法也是为了简化代码

2.自增和自减的书写方式

自增:

书写符号:++

作用:让变量的值 +1

自减:

书写符号:--

作用:让变量的值 -1

一元运算符通常也是用于计数来使用

3.参与运算中前置自增和后置自增的区别

前置自增:先自加再使用(口诀:++在前 先加)

<script>
      let num =1
      console.log(++num + 2)  /* 结果=4 */
     /*  可以理解为先自加,自加后变成了2
      num=1+1,此时num=2
      变成2后再使用,和后面的2相加
      console.log(num + 2) 就是(2+2) */
    </script>

后置自增:先使用再自加(口诀:++在后 后加)

<script>
      let num = 1;
      console.log (num++ +2) /* 结果=3 */
     /*  可以理解为先使用 
      console.log(num + 2) 就是1+2=3
      后面输出自加 num=1+1 */
    </script>

一般我们在开发中都是独立使用的,后置自增 i++ 会使用比较多

四、比较运算符

1.定义

比较两个数据大小、是否相等

2.常见的比较运算符

==: 左右两边是否相等,将两边的数据进行转换为数值 ===: 左右两边是否类型和值都相等

!=: 不全等,只判断里面的值,类型忽略不管忽略,

!==: 不全等,判断里面的类型和值

注意点:比较结果为boolean类型,即只会得到true或false

3.代码如下

<script>
      console.log(3 > 10); /* false */
      console.log(3 < 10); /* true */
      console.log(3 >= 10); /* false  */
      console.log(3 <= 3); /* true */
      // 判断两个是否相等要用==
      console.log(3 == 3); /* true  */
      // 数字和字符串相比较,两个==,只会判断数值不会判断类型
      console.log(3 == '3'); /* true */
      // 数字和字符串相比较,三个===,既会判断数值又会判断类型,三个===是比较严谨推荐写法
      console.log(3 === '3'); /* false */
      //数字和字符串相比较, 最好是先要隐式转换再比较
      console.log(4 > Number('3')); /* true */
      // 判断 3 不等于 5 !=  不等于
      console.log(3!=5); // true 
      console.log(3 != '3'); // false 只比较两边数值,不比较类型
      console.log(3 !== '3'); // true ,判断里面的值和类型
    </script>

4.比较运算符的细节

  1. 比较 一般都是对数字做比较 对于字符串做比较 更多是判断两者是否相等

  2. 如果拿字符串去 大小的比较,判断的标准是 a.先把字符串 拿去做 转数字

​ b.转完了数字之后, 才根据数字做大小比较!

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

五、逻辑运算符

1.定义

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

2.逻辑运算符的使用

符号名称日常读法特点口诀
&&逻辑与并且符号两边都为true结果才为true一假则假
||逻辑或或者符号两边有一个true就为true一真则真
!逻辑非取反true变falsefalse变true真变假,假变真

小试牛刀案例

需求:用户输入一个,判断这个数能被4整除,但是不能被100整除

代码如下

 <script>
      // 1.先获取用户的输入
      let num = +prompt("请输入一个数字");
      // 2.判断要知道是 逻辑与还是逻辑或 
     /* 3.数一下有几个条件 2个条件
       构建输出框架 */
      console.log(num % 4 === 0 && num % 100 !== 0);
    </script>

3.短路运算

主要为了获取值,通过逻辑符给变量赋值

&&:如果第一个表达式假,直接返回false ,如果第一个为真,才会去执行第二个,返回第二个的值,

如果第一个二个为真,就继续执行第三个,返回第三个值

技巧口诀:左边的为false就发生短路不再继续执行 ,它的值要么就是false,要么就返回最后一个值

代码如下

    <script>
       /* 常规应用:逻辑运算符的作用是用来连接多条件,返回一个Boolean值
       短路运算:主要为了获取值,通过逻辑符给变量赋值 */
      /* &&:如果第一个表达式假,直接返回false ,如果第一个为真,才会去执行第二个,返回第二个的值,
    如果第一个二个为真,就继续执行第三个,返回第三个值 
    技巧口诀:左边的为false就发生短路不再继续执行 ,它的值要么就是false,要么就返回最后一个值*/
      /* let num  = 4 < 3 && 5  //结果false
         let num1 = 4 > 3 && 5 && 9  //结果为9
         console.log(num); */
        let a = 10
        let  num = 5 < 4 && ++a
        console.log(num); //结果为false
        console.log(a);  //结果为10
    </script>

|| : 如果第一个表达式为真,就返回第一个值,后面的就不再执行,如果第一个为假,才会执行第二个,

如果第二个也为假,那么就执行第三个,如果没有第三个,就返回false

技巧口诀:左边为true就发生短路不再继续执行,它的值要么是第一个为真的值,要么就是false

代码如下

    <script>
      /* ||:如果第一个表达式为真,就返回第一个值,后面的就不再执行,如果第一个为假,才会执行第二个,
   如果第二个也为假,那么就执行第三个,如果没有第三个,就返回false  
   技巧口诀:左边为true就发生短路不再继续执行,它的值要么是第一个为真的值,要么就是false*/
      /* let num2 = 4 > 3 || 5 //结果true
      let num3 = 4 < 3 || 5 || 9 //结果为5
      console.log(num3) */
        let a1 = 10
        // let  num1 = 5 < 4 || ++a
        // console.log(num1); //结果为11
        
        let  num1 = 5 > 4 || ++a  //结果是true
        console.log(a1);  //结果为10 

      // 生活工作使用场景 函数传参
      function test(name) {
        name = name || "匿名";
        console.log(`我的名字叫${name}`);
      }
      test("jack");
    </script>

注意点

  // 我们的 undefined  如果 转换成  布尔类型 其实是个false
  // 这些值 undefined null 0 空字符串 false  NaN  转成 布尔类型后 false
  console.log(Boolean(undefined));
  console.log(Boolean(null));
  console.log(Boolean(0));
  console.log(Boolean(""));
  console.log(Boolean(false));
  console.log(Boolean(NaN));
  

六、运算符优先级

image.png

注意点

一元运算符里面的逻辑非优先级最高

逻辑与比逻辑或优先级高