前端学习记录23-JavaScript-运算符、分支结构
运算符(操作符)
算数运算符
+ - * / %
浮点数计算会有精度问题
console.log(0.1 + 0.2);
//0.30000000000000004
console.log(0.07 * 100);
//7.000000000000001
var num = 0.1 + 0.2;
console.log(num == 0.3);
返回值为false
不能直接对浮点数进行数值判断 大多数都为false
取余大多数用在判断一个数是否能被整除
算术运算符 优先级为先乘除后加减有括号先括号
递增递减运算符
递增++
,递减--
在变量前 称为前置运算符
在变量后 称后置运算符
使用时必须配合变量使用
++num
相当于 num=num+1;
num++
相当于 num=num+1;
前置自增和后置自增如果单独使用 效果是相同的
前置自增 先自加后返回值
后置自增 先返回原值后自加
与其他代码连用 结果不同
例如
var num=1;
console.log(num++ + 10);
输出结果为10
但在下一行输出 console.log(num);
结果为11
在开发中 大多数用后置递增,并且让代码单独占一行
比较运算符(关系运算符)
比较运算后会返回一个布尔值 作为结果
<小于
>大于
>=大于等于
<=小于等于
==是否相等(会转型) 默认会把字符串型转换为数字型 例如 18=='18' 返回结果为 true
!=不等
===全等 !==不全等 数值和数据类型都相同 console.log(18 === '18'); 返回结果为false
逻辑运算符(布尔运算符)
对布尔值进行运算 返回值也是布尔值 在开发中经常用于多个条件判断
&& 与 有一侧为false 结果就为false
|| 或 两侧同为false时结果才为false
! 非
短路运算(逻辑中断)
如果左边表达式可确定结果 就不再继续运算右边表达式的值
很重要 会影响程序的运行结果
与:
如果第一个表达式为真 则返回表达式2
如果第一个表达式为假 则返回表达式1
console.log(123 && 356); //356
console.log(0 && 123); //0
或:
如果表达式1为真 返回表达式1
如果表达式1为假 返回表达式2
console.log(123 || 456); // 123
console.log(0 || 456); //456
var num = 0;
console.log(123 || num++);
console.log(num); //0
赋值运算符
把数据赋值给变量的运算符
= 直接赋值
+= -= 加、减一个数后再赋值
*= /= %= 乘、除、取余后再赋值
num=num+2;和 num+=2;
是相同的
三元表达式
由三元运算符组成的式子 称为三元表达式
++num
为 一元表达式
3+5
为 二运表达式
? :
三元表达式
条件表达式 ? 表达式1 : 表达式2
执行思路
如果条件表达式结果为真 则返回表达式1的值
如果条件表达式结果为假 则返回表达式2的值
比如:
var num = 10;
console.log(num > 5 ? '是的' : '不是的');
//返回值为是的
运算符优先级
1 小括号
2 一元运算符(只要一个操作数) ++ -- !
3 算数运算符 先* /
后 + -
4 关系运算符 > >= =< <
5 相等运算符 == != === !==
6 逻辑运算符 先&&
后||
7 赋值运算符 =
8 逗号运算符 ,
流程控制
流程控制就是来控制我们代码按照什么结构顺序来执行
流程控制有三种结构 分别是顺序结构、分支结构和循环结构
顺序结构 是程序中最简单、最基本的流程控制,没有特定的语法结构,程序会按照代码的先后顺序、依次执行
分支结构
根据不同的条件,执行不同的路径代码,得到不同的结果(多选一)
if分支结构
if(条件表达式){
执行语句;
}
执行思路 如果条件表达式为真 则执行大括号内语句
如果条件表达式为假 则不执行大括号内语句 执行if语句后的代码
多分支语句
if(){
}else{
}
if(){
}else if(){
}else{
}
switch分支结构
语法结构
switch(表达式){
case value1:执行语句1;break;
case value2:执行语句2;break;
(均未找到)default:执行语句;
}
在开发时 表达式经常写为变量
表达式在和case数据 匹配时必须是全等 数值和数据类型必须一致
break
可以不写 但是提倡写
如果case value1
没有break
则在输出时会 输出 case value2
的内容
所以为了减少错误 就别不写
switch (4) {
case 1:
console.log('这是1');
break;
case 2:
console.log('这是2');
break;
case 3:
console.log('这是3');
break;
default:
console.log('没有匹配结果');
}
switch和if的区别
一般情况这俩可以互换
但是
switch
一般用于确定值的变量
if
一般用于范围判断的变量
switch
在执行语句时,是直接跳转到执行语句
if
是逐条进行判断
switch
的执行效率更高,if
如果条件过多会造成卡顿的问题要注意
判断闰年
死循环
var a = 1;
while (a != 0) {
var years = parseInt(prompt('请输入需要判断的年份'));
if (years % 4 == 0 && years % 100 != 0 || years % 400 == 0) {
alert(years + '是闰年');
} else {
alert(years + '不是闰年');
}
}