JS基础-运算符

1. 运算符

运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号


1.1 运算符的分类

  • 算数运算符
  • 递增和递减运算符
  • 比较运算符
  • 逻辑运算符
  • 赋值运算符

1.2 算数运算符

  • 概念:算术运算使用的符号,用于执行两个变量或值的算术运算
运算符 描述 实例
+ 加法 1 + 2 = 3
- 减法 3 - 2 = 1
* 乘法 2 * 2 = 4
/ 除法 2 / 1 = 1
% 取余数(取模) 5 % 2 = 1
  • 浮点数的精度问题

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

var result = 0.1 + 0.2;    // 结果不是 0.3,而是:0.30000000000000004
console.log(0.07 * 100);   // 结果不是 7,而是:7.000000000000001

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

  • 表达式和返回值

表达式:由数字、运算符、变量等组成的式子

返回值:表达式最终都会有一个结果,返回给开发者


1.3 递增和递减运算符

概述:将数字变量自加 / 减一,递增和递减运算符既可以放在变量前面,也可以放在变量后面

注意:递增和递减运算符必须和变量配合使用!

  • 前置递增运算符:

    口诀:先自加,后返回值(先己后人)

    var  num = 6;
    alert(++num);   // 7
    
  • 后置递增运算符

    口诀:先返回原值,后自加(先人后己)

    var  num = 6;
    alert(num++);   // 6
    

1.4 比较运算符

概念:两个数据进行比较时所使用的运算符,比较运算后返回结果为布尔值

运算符 描述 实例 结果
< 大于 1 < 2 true
> 小于 1 > 2 false
>= 大于等于 2 >= 2 true
<= 小于等于 3 <= 2 false
!= 不等于 3 != 3 false
== 等号(有隐式转换) 3 == '3' true
=== 数据类型与值全等 3 === '3' false
!== 数据类型与值全不等 3 === '3' true

1.5 逻辑运算符

概念:用来进行布尔值运算的运算符,返回结果为布尔值,常用于多个条件的判断

运算符 英文 描述 判断 逻辑中断
&& and 一假则假 真取尾,假取首
|| or 一真则真 真取首,假取尾
not not 取反

注意:取首后逻辑中断将不再向后执行!


1.6 赋值运算符

概念:用来把数据赋值给变量的运算符

规律:把等号拿到运算符后,去掉一个重复的值

运算符 描述 实例
= 简单赋值运算符 c = a + b
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取余赋值运算符 c %= a 等效于 c = c % a
**= 次方赋值运算符 c **= a 等效于 c = c 的 a 次方

1.7 运算符优先级

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

注意:一元运算符里面的逻辑非优先级很高!


2. 流程控制

控制代码按照一定结构顺序来执行


2.1 单分支

条件成立执行代码,否则什么也不做

if (条件表达式) {
    // 条件成立执行的代码语句
}

单分支


2.2 双分支

条件成立则执行 if 里面代码,否则执行 else 里面的代码

if (条件表达式) {
    // [如果] 条件成立执行的代码
} else {
    // [否则] 执行的代码
}

双分支


2.3 多分支

适合于检查多重条件

if (条件表达式1) {
    语句1;
} else if (条件表达式2)  {
    语句2;
} else if (条件表达式3)  {
   语句3;
 ....
} else {
    // 上述条件都不成立执行此处代码
}

2.4 三元表达式

判断条件 ? 真输出 : 假输出;

简单理解: 类似于 双分支的简写


2.5 switch 多分支

基于不同的条件来执行不同的代码,主要针对匹配固定的值时

switch (表达式) { 
    case 值1:
        // 表达式 等于 value1 时要执行的代码
        break;
    case 值2:
        // 表达式 等于 value2 时要执行的代码
        break;
    default:
        // 表达式 不等于任何一个 value 时要执行的代码
}
  • switch 后面括号内可以是表达式或值, 通常是一个变量
  • case 后设置固定的选项表达式或值,后面跟一个冒号
  • switch 表达式的值会直接与 case 的值做比较
  • 如果存在匹配全等(===) ,则与该 case 关联的代码块会被执行,并在遇到 break 时停止,整个 switch 语句代码执行结束
  • 如果所有的 case 的值都和表达式的值不匹配,则执行 default 里的代码

注意: 执行case 里面的语句时,如果没有break,则继续执行下一个case里面的语句,直到遇到 break 为止


switch 语句和 if else if 语句的区别

  • 一般情况下,它们两个语句可以相互替换
  • switch 语句通常处理比较确定的值, 而 if else 语句常用于范围判断 (大于、等于某个范围)
  • switch 语句进行条件判断后直接执行到程序的条件语句,效率更高;而if…else 语句有几种条件,就得判断多少次
  • 当分支比较少时,if… else语句的执行效率比 switch语句高
  • 当分支比较多时,switch语句的执行效率较高,而且结构更清晰

posted @ 2020-09-08 10:39  今夜星河漫漫  阅读(191)  评论(0编辑  收藏  举报