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; 就是一个简写的语法
  • -= *= /= %= 除了运算规则不同,作用是一样的,都是简写

操作的优先级

  1. 第一优先级: [] . ()
  2. 第二优先级: ++ -- !
  3. 第三优先级: * / %
  4. 第四优先级: + -
  5. 第五优先级: > >= < <=
  6. 第六优先级: == != === !==
  7. 第七优先级: &&
  8. 第八优先级: ||
  9. 第九优先级: = += -= *= /= %=

上面是具体的优先级,但是平时我们不会把很多的操作符放在一起运算,所以我们大致记住

  1. 括号先算
  2. 其次算算术
  3. 再次算比较
  4. 然后算逻辑
  5. 最后算赋值

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 (初始化表达式; 条件表达式; 自增表达式) {
 循环体;
}
//初始化表达式只是开始用到 后期反复执行。。。条件-->循环体-->自增-->条件。。。。。

执行过程:

  1. 执行初始化表达式
  2. 执行条件表达式
  3. 如果条件表达式的结果为 false,结束循环,继续执行循环后面的代码
  4. 如果条件表达式的结果为 true,执行循环体
  5. 执行自增表达式
  6. 重复 2~5 的步骤,直到条件表达式的结果为 false,结束循环

while 循环

while (条件表达式) {
 循环体;
}
// 循环体就是重复执行的代码
//可以做无限循环(true)就可以实现
//需要结束时加break

执行过程:

  1. 先执行条件表达式,得到一个布尔类型的结果
  2. 如果表达式的结果为 false,循环结束,执行循环后面的代码
  3. 如果表达式的结果为 true,执行循环体
  4. 执行条件表达式,得到一个布尔类型的结果
  5. 重复 2~4 的过程,直到表达式结果为 false,结束循环

do-while 循环(补充)

do {
 循环体;
} while (条件表达式);

执行过程

  1. 先执行循环体
  2. 执行条件表达式
  3. 如果条件表达式结果为 false,结束循环
  4. 如果条件表达式结果为 true,执行循环体
  5. 重复 2~4 的步骤,直到条件表达式结果为 false,结束循环

break 和 continue

  1. break 用于结束整个循环
  2. continue 用于结束整个循环中的一次
  3. break 和 continue 后面的代码都不会执行