比较运算符
概念:比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true/false)作为比较运算的结果。
< 小于号
> 大于号
>= 大于等于号
<= 小于等于号
== 判等号(会转型)
!= 不等号
=== 全等 要求值和数据类型都一致
= 赋值
== 判断(判断两值是否相等 注意此时有隐式转换)
=== 全等 (两边值和数据类型是否完全相同)
<script>
console.log(18=='18');//true
console.log(18==='18');//false
</script>
逻辑运算符
逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。后面开发中经常用于多个条件的判断
&& "逻辑与",简称"与” and 两边都是true才返回true,否则返回false
|| "逻辑或",简称"或" or 两侧都是false,才是false,只要有一侧是true就是true
! "逻辑非",简称"非" not
<script>
console.log(3>5 &&3>2);
console.log(3<5 && 3>2);
console.log(3>5 || 3>2);
console.log(3>5 || 3<2);
console.log(!true);//false
</script>
逻辑与的短路运算
如果表达式1的结果为真的话,返回的是表达式2,如果表达式1是假,返回的是表达式1
<script>
console.log(123 && 456);//456
console.log(0 && 456);//0
</script>
逻辑或的短路运算
如果表达式1的值为真,则返回表达式1,如果表达式1的值为假,则返回表达式2
<script>
console.log(123 || 456);//123
console.log(0 || 456);//456
var num = 0;
console.log(123||num++);//123
console.log(num);//0
</script>
赋值运算符
用来把数据赋值给变量的运算符。
<script>
var age = 10;
age + = 5; // 相当于age=age+5;
age - = 5; //相当于age=age-5;
age * = 10;// 相当Fage=age*10;
</script>
运算符的优先级
1 小括号 ()
2 一元运算符 ++ -- !
3 算数运算符 先 * / % 后 + -
4 关系运算符 > >= < <=
5 相等运算符 == != === !==
6 逻辑运算符 先 && 后 ||
7 赋值运算符 =
8 逗号运算符 ,
<script>
var num = 7;
var str = "我爱你~中国~";
console.log(str.length);
console.log(num > 5 && str.length >= num);
console.log(num < 5 && str.length >= num);
console.log(!(num < 10));
console.log(!(num < 10 || str.length == num));
var num = 0;
console.log(123 || num++);
console.log(num);
console.log(4 >= 6 || '人' != '阿凡达' && !(12 * 3 == 122) && true);
var num = 10;
console.log(5 == num / 2 && (2 + 2 * num).toString() == '22');
</script>
流程控制
顺序流程控制
分支流程控制
if语句
switch语句
if else语句(双分支语句)
if else if语句(多分支语句)
三元表达式
表达式1?表达式2:表达式3;
执行思路 如果表达式1为true,则返回表达式2的值,如果为表达式1为false,则返回表达式3的值
switch分支流程控制
语法结构
switch语句也是多分支语句,它用于基于不同的条件来执行不同的代码。当要针对变量设置一系列的特定值的选项时,就可以使用 switch。
<script>
switch(表达式){
case value1;
//表达式等于 value1 时要执行的代码
break;
case value2;
//表达式等于 vaLue2 时要执行的代码
break;
default;
//表达式不等于任何一个 value 时要执行的代码
}
</script>
switch:开关转换,case:小例子选项
关键字switch,后面括号内可以是表达式或值,通常是一个变量
关键字case,后跟一个选项的表达式或值,后面跟一个冒号
switch表达式的值会与结构中的case的值做比较
如果存在匹配全等(===),则与该case关联的代码块会被执行,并在遇到break时停止,整个switch语句代码执行结束
如果所有的case的值都和表达式的值不匹配,则执行default里的代码
注意:执行case里面的语句时,如果没有break,则继续执行下一个case里面的语句。
switch语句和ifelseif语句的区别
一般情况下,它们两个语句可以相互替换
switch.case语句通常处理case为比较确定值的情况,而ifelse…语句更加灵活,常用于范围判断(大于、等于某个范围)
switch语句进行条件判断后直接执行到程序的条件语句,效率更高。而if.else语句有几种条件,就得判断多少次。
当分支比较少时,if...else语句的执行效率比switch语句高。
当分支比较多时,switch语句的执行效率比较高,而且结构更清晰。