Skip to content

1.算术运算符

隐式类型转换

除了加法和其他字符串运算时,它先将其他值转为字符串,在进行拼接;其他运算它先将其他值转为数字,在进行运算

js
a = 10 - '5' // 5
a = 10 - true // 9
a = 10 - false // 10
a = 10 - undefined // NaN
a = 10 - null // 10

2.赋值运算符

js
let a = 10
a = a + 10 // a += 10  (*=   /=   %=    **=)
//  ??= 只有当a为undefined或null才会进行赋值

3..运算符

js
+'123' // 123
a = 123
b = -a // -123

4.自增和自减

js
//  ++ 使用后回事原来的变量立刻增加1
a++
a--

// 前自增:返回自增前的值
// 后自增:返回自增后的值

5.逻辑运算符

js
!   //逻辑非:对布尔值值取反,对非布尔值值取反,会先将其转为布尔值值再取反,可运用于隐式转布尔值   !!123 -> true

&&  //逻辑与:左右都为true返回true,否则返回false;非布尔值运算,会先转为布尔值后运算,但是最终返回原值
      //-  第一个值为(falsy),则直接返回第一个值的原值1,如果第一个值为ture,则直接返回第二个值
      NaN && 2  -> NaN
    0 && 1     -> 0

        1 && undefined  ->  undefined
        1 && false     ->  false

||  //逻辑或:左右有true,则不看第二个值,则返回true的原值,否则返回false
        12 || false    ->   12
    null || {a : 1}  ->   {a : 1}

6.关系运算符

js
//用来检查两个值的关系是否成立,成立返回true,否则返回false (多个比较用&&)
  >  >=  <  <=
// 非数值与数值比较会先非数值转为数值再比较  7 < '10' ->  true
//  两端为字符串则逐个比较字符的Unicode编码
   'a' > 'b' -> false
   'abc' < 'b' -> true(比完第一位则结束)
   '12' < '2'  -> true

7.相等运算符

js
==/!=  //用来比较两个值是否相等/不相等,不同类型会转为相同类型再比较
    '2' == 2  -> true
  //null和undefined进行相等比较会返回true(null == undefined -> true)
  //NaN不和任何值相等,包括它自身
===/!== //检查两个值是否全等/不全等,不会自动类型转换
    '2' == 2  -> false
  //null === undefined -> false

8.条件运算符

js
表达式 ? 表达式1 : 表达式2 // let max = a > b ? a : b

9.控制语句

js
if{  }else if(){  }else{  }
if //不加{}if只会控制紧随其后的一条语句

switch(表达式){
    case 表达式:
        break
        ...
    default
        ...
        //表达式进行全等比较,满足则执行代码,否则比较其他case后的表达式
}

10.循环语句

js
//循环三要素 1.初始化变量  2.条件表达式  3.更新表达式
while(条件表达式){...}
do{  ...  }while(表达式)  //先执行一次循环体,再判断条件是否执行循环体
for(let i = 0;i < 10;i++){ ... } //for(;;)死循环

break与continue💔终止离它最近的循环, break立即循环停止; continue跳过当前循环,继续下一次循环

11.数据类型

js
// 原始值(7种):
Number, String, Boolean, Null, Undefined, BigInt, Symbol
// 引用值(对象)
Object