javaScript-操作符-分支结构-循环结构
1 操作符
算术操作符
自增操作符、自减操作符
// ++ --
需要注意的是后++和后--,在和其他算术运算符一起操作时 是先原值操作在下次操作在再自身加减
口诀:
- ++放在变量前面,什么时候计算++?先算++,在算整个运算;
- ++放在变量后面,什么时候计算++?先算整个运算,再算++;
+ - * / %
//1.常规操作:Number类型
// var a = 10;
// var b = 3;
// + - / * %
// var c = a + b;
// 10对3取余数;
// var c = 10 % 3;
// console.log(c);
// 2.非常规:字符串、Boolean、null、undefined;
// 字符串 遇见 +,把左右的数据类型 转化为字符串
// 字符串 + 字符串 :字符串拼接;
// var a = 10 + "10";
// var a = true + "10";
// console.log(a, typeof a);
// 运算:从左到右运算;
// var a = 10 + 10 + "10";
// console.log(a);
// 只要字符串不是遇见+,遇见-*/% ,字符串会 隐式 转化 Number类型;
// var a = 10 - "10";
// console.log(a, typeof a);
// var a = 10 - "我";
// console.log(a, typeof a);
// 2.其他(排出string类型外):true null undefined
// 隐式转化:转为数字类型;
// 输出 10
// var a = false + 10;
// console.log(a);
// 输出 10
// var a = null + 10;
// console.log(a);
// 输出 NaN
// var a = undefined + 10;
// console.log(a);
比较操作符
比较操作符的就是比较两个数据,操作符号有:
> < >= <=
运算结果是 布尔 类型
!= 和!== 是比较两个数据是否不相等的 !== 同时比较值和类型
== 和 === 是用来比较两个数据是否相等的 === 不仅比较两个数据的值,还比较数据的类型
逻辑操作符
逻辑与&&
- 两个条件都为 true 结果为 true 否者为 false
- 逻辑短路:当第一个值为 false 将不再判断第二个值 直接返回第一个值
逻辑或 ||
- 只要有一个条件为 true 结果为 true,两个都是 false 才是 false
- 逻辑短路:当第一个值为 true 将不再判断第二个值 直接返回第一个值
逻辑非
- 把 true 变 false 把 false 变 true
注意:逻辑非的优先级 仅次于() 和 [ ] 与 前两个逻辑操作符一起用的时候需要注意
赋值操作符
= += -= *= /= %=
- += 的作用是简写加法 a += 2; // 相当于是 a = a + 2; 就是一个简写的语法
- -= *= /= %= 除了运算规则不同,作用是一样的,都是简写
操作的优先级
- 第一优先级: [] . ()
- 第二优先级: ++ -- !
- 第三优先级: * / %
- 第四优先级: + -
- 第五优先级: > >= < <=
- 第六优先级: == != === !==
- 第七优先级: &&
- 第八优先级: ||
- 第九优先级: = += -= *= /= %=
上面是具体的优先级,但是平时我们不会把很多的操作符放在一起运算,所以我们大致记住
- 括号先算
- 其次算算术
- 再次算比较
- 然后算逻辑
- 最后算赋值
2 流程控制-三个名词
- 表达式:有返回结果;在浏览器后台可以直接敲表达式,回车返回的就是该表达式的结果;
- 语句:有思考在里面的表达式;思考主要是告诉浏览器要做什么事情;
-
结构:
- 顺序结构:从上到下执行的代码就是顺序结构 程序默认就是由上到下顺序执行的
- 分支:不同的情况,走不同的分支 ;
- 循环结构:要求一个流程要有重复的思想在里面;
3 分支结构(重要)
这就使用到了分支结构,分支结构分为三个大类
- if 结构
- switch-case 结构
- 三元表达式
if 结构 (常用)
单个 if 结构:解决的一个分支的判断问题
if-else: if-else 结构,解决两个分支的判断问题
if-else-if:if-else-if 结构,解决多分支的判断问题
if(条件表达式1){
当条件表达式1的结果是 true 时执行的代码
}else if(条件表达式2){
当条件表达式2的结果是 true 时执行的代码
}else if(条件表达式3){
当条件表达式3的结果是 true 时执行的代码
}
// 中间可以继续写多个判断
else {
多个条件表达式的结果都是 false 的时候执行的代码
}
//例如: 判断一下一个人的性别是不是男的,如果是男的,让他去男厕所,如果是女的,让他去女厕所 , 否则不让他上厕所
var gender = prompt('请输入性别');
if(gender === '男'){
console.log('请去男厕所');
}else if(gender === '女') {
console.log('请去女厕所');
}else {
console.log('你个不男不女的家伙,我们这里没有你能上的厕所,去别处吧');
}
注意:在 if-else-if 连着多个判断时 最终只会进到一个分支中
switch-case 结构
switch-case 结构主要用于多个固定值之间的判断
//例如: 判断一下一个人的性别是不是男的,如果是男的,让他去男厕所,如果是女的,让他去女厕所 ,如果是人妖,去人妖专用厕所,如果都不是,打晕送走
var gender = prompt("请输入性别");
switch (gender) {
case "男":
console.log("请去男厕所");
break;
case "女":
console.log("请去女厕所");
break;
case "人妖":
console.log("请去人妖专用厕所");
break;
default:
console.log("净给我添乱,打晕送走");
break;
}
值得注意的是:这个结构里面的 break 并不是必须的,如果两个 case 之间没有 break ,执行完了一个 break 之后,会继续执行下面的 case 的代码
三元表达式
三元表达式的使用是简写 if-else 结构 属于表达式
表达式1 ? 表达式2 : 表达式3;
// 这个表达式会先执行表达式1,判断其结果是true还是false,如果是true,则执行表达式2,
//然后将表达式2的执行结果作为整个三元表达式的结果,如果表达式1的结果是false,则执行表达式3,
//并表达式3的结果作为整个三元表达式的结果
//例如: 求二个数字中谁更大
var a = 10;
var b = 20;
var max = a > b ? a : b;
console.log(max);
总结
1.在我们需要判断的时候,就可以使用分支结构
2.if 判断用法很多,switch-case 却只能判断固定值
3.三元表达式就是 if-else 的简写,将来可以把代码写得更简洁
4 循环结构(重要)
for 循环(常用)
for (初始化表达式; 条件表达式; 自增表达式) {
循环体;
}
//初始化表达式只是开始用到 后期反复执行。。。条件-->循环体-->自增-->条件。。。。。
执行过程:
- 执行初始化表达式
- 执行条件表达式
- 如果条件表达式的结果为 false,结束循环,继续执行循环后面的代码
- 如果条件表达式的结果为 true,执行循环体
- 执行自增表达式
- 重复 2~5 的步骤,直到条件表达式的结果为 false,结束循环
while 循环
while (条件表达式) {
循环体;
}
// 循环体就是重复执行的代码
//可以做无限循环(true)就可以实现
//需要结束时加break
执行过程:
- 先执行条件表达式,得到一个布尔类型的结果
- 如果表达式的结果为 false,循环结束,执行循环后面的代码
- 如果表达式的结果为 true,执行循环体
- 执行条件表达式,得到一个布尔类型的结果
- 重复 2~4 的过程,直到表达式结果为 false,结束循环
do-while 循环(补充)
do {
循环体;
} while (条件表达式);
执行过程
- 先执行循环体
- 执行条件表达式
- 如果条件表达式结果为 false,结束循环
- 如果条件表达式结果为 true,执行循环体
- 重复 2~4 的步骤,直到条件表达式结果为 false,结束循环
break 和 continue
- break 用于结束整个循环
- continue 用于结束整个循环中的一次
- break 和 continue 后面的代码都不会执行