算术运算符
-
+
-
-
-
*
-
/
-
%
一元运算符
一元运算符:只作用到一个值上面的运算符,就叫做一元运算符。
-
+(正号) 自动类型转换,相当于调用了Number();
-
-(负号)自动类型转换,同时会改变值的正负号。
-
++ 自增1
-
-- 自减1
自增自减
-
前置自增/自减:会改变自身的值,然后再去参与运算
-
后置自增/自减:先去参与运算,再改变自身的值。
var a = 10;
// 先将a的值,也就是10赋值给b,然后a自增1,变成11.
var b = a++;
// a现在为11,先自增1,变成12,再将值赋值给c。
var c = ++a;
// a = 12 b = 10 c = 12
赋值运算符
用于给变量赋值,最常见的赋值运算符为=
.
除此之外,还有一些特殊的赋值运算符。
a+=b;//a=a+b
a-=b;//a=a-b
a*=b;//a=a*b
a/=b;//a=a/b
a%=b //a = a%b
比较运算符
用于比较两个值的大小关系,返回一个布尔值。
-
> 大于
-
< 小于
-
>= 大于等于
-
<= 小于等于
-
== 相等
-
=== 完全相等(严格相等)
-
!= 不等于
-
!== 严格不相等
== 和 === 的区别
==:只要两个变量的值相等,就返回true。类型不同,会自动转换成数字进行比较。
===:先比较两个变量的类型,如果类型不同,则直接返回false。如果类型相同,则再比较值。
注意
undefined和null直接比较是相等的。 严格情况下,是不相等。
undefined == null //true;
undefined === null //false
如果一个字符串和数字比较,该字符串不能转数字,比较的结果始终为fasle;
"123abc" == 123 //false
逻辑运算符
-
! 取反 将布尔值转为相反的值
-
&& 与
-
|| 或
! 取反
如果是true,则变为false,如果为false,则变为true。
【重点】如果 !后面不是一个布尔值,则将其自动转换为布尔值再取反。
var a = "abc";
var b = !a;//b = false;
var c = !b;//c = true;
&& 与运算符
先判断&&之前的值是否为真,如果为真,返回后面的值。如果前面的值为假,返回前面的值。
var a = 0&&20; //0
var b = 10&&"10";//"10"
var c = 20&&null;//null
常用于条件判断,也是if分支语句中,因为if()中的值会自动转为布尔值,所以,我们在if中使用&&的时候,整个表达式只需要关心true和false两种情况。
// 如果条件表达式1和条件表达式2都成立,a的布尔值为true。 表达式有一个不成立,a的值为false
var a = 条件表达式1&&条件表达式2;
表达式1的值 表达式2的值 a的值
true false false
true true true
false false false
false true false
|| 或运算符
先判断||之前的值是否为真,如果为真,返回前面的值。如果为假,返回后面的值。
var a = 5 || 10;//5
var a = 0 || 20;//20
var a = 0 || null;//null
常用于条件判断,在if小括号中,会出现以下几种情况。
var a = 表达式1||表达式2
//如果表达式1或表达式2中有一个成立,a的布尔值都为true 两个都不成立,则为false、
表达式1的值 表达式2的值 a的值
true false true
true true true
false false false
false true true
总结: && 一假则假 || 一真则真 ! 真变假 假变真
三元运算符
格式
//表达式1成立,则整个表达式的值为表达式2的值,如果表达式1不成立,则整个表达式的值为表达式3的值。
表达式1?表达式2:表达式3
var age = 26;
//age>18成立,则result = age - 1;
var result = age>18?age-1:age+10;
console.log(result);//25
var age = 16;
//age>18不成立,则result = age + 10; result的值为26
var result = age>18?age-1:age+10;
console.log(result);//26
if分支
用于根据不同的条件,来选择执行不同的代码。
//小括号中需要一个布尔值,如果不是布尔值,则会自动转换数据类型。
if(布尔值){
//布尔值为true,执行这里的代码 大括号之间可以写任意行代码。
}else{
//布尔值为false,执行这里的代码
}
案例
var age = 16;
if (age>18) {
alert("欢迎德玛西亚黄金大神光临本网吧!")
} else {
alert("滚")
}
其他的几种结构
//省略else
if(布尔值){
}
//多分支
if(布尔值){
}else if(布尔值){
}...{
}else{
}
//多分支省略else
if(布尔值){
}else if(布尔值){
}...{
}
案例
var score = 59;
if (score>90) {
alert("iPhone13一台!")
}else if(score>80){
alert("手办10个")
}else if(score>60){
alert("口头奖励")
}else{
alert("七匹狼混合双打")
}
分支嵌套
if(布尔值){ if(布尔值){ .... if(布尔值){ } } }
案例
var oilType = prompt("请输入您要加的汽油类型:92或者95");
var num = prompt("请输入您要加的量");
//定义一个变量,用于保持 单价
var price,total;
if (oilType == 92) {
//走到这,说明汽油的类型为92号
if (num>20) {
//到这,说明加油量大于20,单价为5.8
price = 5.8
}else{
price =6;
}
}else if(oilType == 95){
//到这,说明汽油的类型为95,接下来,根据加油量判断单价
if (num>30) {
price = 6.7
} else {
price = 7
}
}else{
alert("请输入正确的汽油类型:92或95")
}
total = num * price;
alert("总共花费:"+total+"元")