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