JavaScript基础第02天【笔记+代码】


昨日复习

  • JS的单行注释符号是 //
  • 声明变量的关键字是 var
  • JS的输出语句有 console.logalertprompt
  • 把字符串转化为整数的方法是 parseInt
  • 判断数据是否为非数值的方法是 isNaN

JavaScript运算符

  • 运算符
  • 算术运算符
  • 递增和递减运算符
  • 比较运算符
  • 逻辑运算符
  • 赋值运算符
  • 运算符优先级

1. 运算符

运算符(operator)也被称为 操作符,是用于实现赋值、比较和执行算数运算等功能的符号。

JavaScript中常用的运算符有:

  • 算数运算符
  • 递增和递减运算符
  • 比较运算符
  • 逻辑运算符
  • 赋值运算符

2. 算术运算符

2.1 算术运算符概述

概念:算术运算使用的符号,用于执行两个变量或值的算术运算。

运算符 描述 实例
+ 10 + 20 = 30
- 10 - 20 = -10
* 10 * 20 = 200
/ 10 / 20 = 0.5
% 取余数(取模) 返回除法的余数 9 % 2 = 1

2.2 浮点数的精度问题

浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数。

 var result = 0.1 + 0.2; // 结果不是 0.3,而是:0.30000000000000004
 console.log(0.07 * 100); // 结果不是 7, 而是:7.000000000000001

所以:不要直接判断两个浮点数是否相等 !

2.3 提问

  1. 我们怎么判断 一个数能够被整除呢?
    它的余数是0 就说明这个数能被整除,这就是 % 取余运算符的主要用途
  2. 请问 1 + 2 * 3 结果是?
    结果是7 ,注意算术运算符优先级的,先乘除,后加减,有小括号先算小括号里面的

01 - 算数运算符

 <!DOCTYPE html>
 <html>
 <head>
 	<meta charset="utf-8">
 	<title>01 - 算数运算符</title>
 	<script>
 		console.log(1 + 1); // 2
 		console.log(1 - 1); // 0
        console.log(1 * 1); // 1
        console.log(1 / 1); // 1
        // 1. % 取余 (取模)  
        console.log(4 % 2); // 0
        console.log(5 % 3); // 2
        console.log(3 % 5); // 3
        // 2. 浮点数 算数运算里面会有问题
        console.log(0.1 + 0.2); // 0.30000000000000004
        console.log(0.07 * 100); // 7.000000000000001
        // 3. 我们不能直接拿着浮点数来进行相比较 是否相等
        var num = 0.1 + 0.2;
        console.log(num == 0.3); // false
 	</script>
 </head>
 <body>
 	
 </body>
 </html>

在这里插入图片描述


2.4 表达式和返回值

表达式: 是由数字、运算符、变量等以能求得数值的有意义排列方法所得的组合

简单理解:是由数字、运算符、变量等组成的式子

表达式最终都会有一个结果,返回给我们,我们成为返回值


02 - 表达式和返回值

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>02 - 表达式和返回值</title>
	<script>
		// 是由数字、运算符、变量等组成的式子 我们成为表达式   1 + 1 
        console.log(1 + 1); // 2 就是返回值
        // 1 + 1 = 2
        // 在我们程序里面 2 = 1 + 1 把我们的右边表达式计算完毕把返回值给左边
        var num = 1 + 1;
	</script>
</head>
<body>

</body>
</html>

3. 递增和递减运算符

3.1 递增和递减运算符概述

如果需要反复给数字变量添加或减去1,可以使用 递增(++)和递减( - - )运算符来完成。
在 JavaScript 中,递增(++)和递减( - - )既可以放在变量前面,也可以放在变量后面。放在变量前面时,我们可以称为 前置递增(递减)运算符,放在变量后面 时,我们可以称为 后置递增(递减)运算符
注意:递增和递减运算符必须和变量配合使用。


3.2 递增运算符

1. 前置递增运算符

++num 前置递增,就是自加1,类似于 num = num + 1,但是 ++num 写起来更简单。
使用口诀:先自加,后返回值

var num = 10;
alert(++num + 10); // 21

03 - 前置递增运算符

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>03 - 前置递增运算符</title>
    <script>
        // 1. 想要一个变量自己加1   num = num + 1 比较麻烦
        var num = 1;
        num = num + 1; // ++num
        num = num + 1;
        console.log(num); // 3
        // 2. 前置递增运算符  ++ 写在变量的前面
        var age = 10;
        ++age; // 类似于 age = age + 1
        console.log(age); // 11
        // 3. 先加1  后返回值
        var p = 10;
        console.log(++p + 10); // 21
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


2. 后置递增运算符

num++ 后置递增,就是自加1,类似于 num = num + 1 ,但是 num++ 写起来更简单。
使用口诀:先返回原值,后自加

var num = 10;
alert(10 + num++); // 20

练习

var a = 10;
++a;
var b = ++a + 2;
console.log(b); // 14
var c = 10;
c++;
var d = c++ + 2;
console.log(d); // 13
var e = 10;
var f = e++ + ++e;
console.log(f); // 21

04 - 后置递增运算符

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>04 - 后置递增运算符</title>
    <script>
        var num = 10;
        num++; // num = num + 1;  ++num;
        console.log(num); // 11
        // 1. 前置自增和后置自增如果单独使用 效果是一样的
        // 2. 后置自增 口诀:先返回原值 后自加1 
        var age = 10;
        console.log(age++ + 10); // 20
        console.log(age); // 11
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


3.3 前置递增和后置递增小结

  • 前置递增和后置递增运算符可以简化代码的编写,让变量的值 + 1 比以前写法更简单
  • 单独使用时,运行结果相同
  • 与其他代码联用时,执行结果会不同
  • 后置:先原值运算,后自加(先人后己)
  • 前置:先自加,后运算(先已后人)
  • 开发时,大多使用后置递增/减,并且代码独占一行,例如:num++; 或者 num- -;

05 - 递增运算符练习

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>05 - 递增运算符练习</title>
    <script>
        var a = 10;
        ++a; // ++a  11  a = 11
        var b = ++a + 2; // a = 12   ++a = 12
        console.log(b); // 14

        var c = 10;
        c++; // c++ 11  c = 11
        var d = c++ + 2; //  c++  = 11     c = 12
        console.log(d); // 13

        var e = 10;
        var f = e++ + ++e; // 1. e++ =  10  e = 11  2. e = 12  ++e = 12
        console.log(f); // 22
        // 后置自增  先表达式返回原值 后面变量再自加1
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


4. 比较运算符

4.1 比较运算符概述

概念:比较运算符(关系运算符)是 两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true / false)作为比较运算的结果。

运算符名称 说明 案例 结果
< 小于号 1 < 2 true
> 大于号 1 > 2 false
>= 大于等于号(大于或者等于) 2 >= 2 true
<= 小于等于号(小于或者等于) 3 <= 2 false
== 判等号(会转型) 37 == 37 true
!= 不等号 37 != 37 false
=== !== 全等 要求值和 数据类型都一致 37 === ‘37’ false

4.2 =小结

符号 作用 用法
= 赋值 把右边给左边
== 判断 判断两边值是否相等(注意此时有隐式转换)
=== 全等 判断两边的值和数据类型是否完全相同
console.log(18 == '18');
console.log(18 === '18');

练习

var num1 = 10;
var num2 = 100;
var res1 = num1 > num2;  // false
var res2 = num1 == 11;   // false
var res3 = num1 != num2; // true

06 - 比较运算符

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>06 - 比较运算符</title>
    <script>
        console.log(3 >= 5); // false
        console.log(2 <= 4); // true
        //1. 我们程序里面的等于符号 是 ==  默认转换数据类型 会把字符串型的数据转换为数字型 只要求值相等就可以
        console.log(3 == 5); // false
        console.log('pink老师' == '刘德华'); // flase
        console.log(18 == 18); // true
        console.log(18 == '18'); // true
        console.log(18 != 18); // false
        // 2. 我们程序里面有全等 一模一样  要求 两侧的值 还有 数据类型完全一致才可以 true
        console.log(18 === 18);
        console.log(18 === '18'); // false
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


5. 逻辑运算符

5.1 逻辑运算符概述

概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。后面开发中经常用于多个条件的判断

逻辑运算符 说明 案例
&& “逻辑与”,简称"与" and true && false
|| “逻辑或”,简称"或" or true || false
! “逻辑非”,简称"非" not !true

5.2 逻辑与 &&

两边都是 true才返回 true,否则返回 false

在这里插入图片描述


5.3 逻辑或 ||

两边都为 false 才返回 false,否则都为true

在这里插入图片描述


5.4 逻辑非 !

逻辑非(!)也叫作取反符,用来取一个布尔值相反的值,如 true 的相反值是 false

var isOk = !true;
console.log(isOk); // false

07 - 逻辑运算符

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>07 - 逻辑运算符</title>
    <script>
        // 1. 逻辑与 &&  and 两侧都为true  结果才是 true  只要有一侧为false  结果就为false 
        console.log(3 > 5 && 3 > 2); // false
        console.log(3 < 5 && 3 > 2); // true
        // 2. 逻辑或 || or  两侧都为false  结果才是假 false  只要有一侧为true  结果就是true
        console.log(3 > 5 || 3 > 2); // true 
        console.log(3 > 5 || 3 < 2); // false
        // 3. 逻辑非  not  ! 
        console.log(!true); // false
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


08 - 逻辑运算符练习

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>08 - 逻辑运算符练习</title>
    <script>
        var num = 7;
        var str = "我爱你~中国~";
        console.log(num > 5 && str.length >= num); // true
        console.log(num < 5 && str.length >= num); // false
        console.log(!(num < 10)); // false
        console.log(!(num < 10 || str.length == num)); // false
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


5.5 短路运算(逻辑中断)

短路运算的原理: 当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值;

1. 逻辑与

  • 语法:表达式1 && 表达式2
  • 如果第一个表达式的值为真,则返回表达式2
  • 如果第一个表达式的值为假,则返回表达式1
console.log( 123 && 456 );        // 456
console.log( 0 && 456 );          // 0
console.log( 123 && 456 && 789 ); // 789

2. 逻辑或

  • 语法:表达式1 || 表达式2
  • 如果第一个表达式的值为真,则返回表达式1
  • 如果第一个表达式的值为假,则返回表达式2
console.log( 123 || 456 );        // 123
console.log( 0 || 456 );          // 456
console.log( 123 || 456 || 789 ); // 123

09 - 短路运算(逻辑中断)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>09 - 短路运算(逻辑中断)</title>
    <script>
        // 1. 用我们的布尔值参与的逻辑运算  true && false  == false 
        // 2. 123 && 456  是值 或者是 表达式 参与逻辑运算? 
        // 3. 逻辑与短路运算  如果表达式1 结果为真 则返回表达式2  如果表达式1为假 那么返回表达式1
        console.log(123 && 456); // 456
        console.log(0 && 456); //  0
        console.log(0 && 1 + 2 && 456 * 56789); // 0
        console.log('' && 1 + 2 && 456 * 56789); // ''
        // 如果有空的或者否定的为假 其余是真的  0  ''  null undefined  NaN
        // 4. 逻辑或短路运算  如果表达式1 结果为真 则返回的是表达式1 如果表达式1 结果为假 则返回表达式2
        console.log(123 || 456); // 123
        console.log(123 || 456 || 456 + 123); // 123
        console.log(0 || 456 || 456 + 123); // 456
        // 逻辑中断很重要 它会影响我们程序运行结果思密达
        var num = 0;
        console.log(123 || num++); // 123
        console.log(num); // 0
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


6. 赋值运算符

概念:用来把数据赋值给变量的运算符。

赋值运算符 说明 案例
= 直接赋值 var usrName=‘我是值’;
+=、-= 加、减一个数 后在赋值 var age = 10; age += 5; // 15
*=、/=、%= 乘、除、取模 后在赋值 var age = 2; age *= 5; // 10
var age = 10;
age += 5;  // 相当于 age = age + 5;
age -= 5;  // 相当于 age = age - 5;
age *= 10; // 相当于 age = age * 10;

10 - 赋值运算符

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>10 - 赋值运算符</title>
    <script>
        var num = 10;
        // num = num + 1;   num++
        // num = num + 2; // num += 2;
        // num += 2;
        num += 5;
        console.log(num);
        var age = 2;
        age *= 3;
        console.log(age);
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


7. 运算符优先级

优先级 运算符 顺序
1 小括号 ()
2 一元运算符 ++ – !
3 算数运算符 先 * / % 后 + -
4 关系运算符 > >= < <=
5 相等运算符 == != === !==
6 逻辑运算符 先 && 后 ||
7 赋值运算符 =
8 逗号运算符 ,
  • 一元运算符里面的 逻辑非优先级很高
  • 逻辑与比逻辑或优先级高

11 - 运算符优先级

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>11 - 运算符优先级</title>
    <script>
        // ++num  !num  2 + 3
        console.log(4 >= 6 || '人' != '阿凡达' && !(12 * 2 == 144) && true); // true
        var num = 10;
        console.log(5 == num / 2 && (2 + 2 * num).toString() === '22'); // true
        console.log('-------------------');
        var a = 3 > 5 && 2 < 7 && 3 == 4; 
        console.log(a); // false

        var b = 3 <= 4 || 3 > 1 || 3 != 2;
        console.log(b); // true

        var c = 2 === "2";
        console.log(c); // false

        var d = !c || b && a;
        console.log(d); // true
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


JavaScript流程控制 - 分支

  • 流程控制
  • 顺序流程控制
  • 分支流程控制 if 语句
  • 三元表达式
  • 分支流程控制 switch 语句

1. 流程控制

在一个程序执行的过程中,各条代码的执行顺序对程序的结果是有直接影响的。很多时候我们要通过控制代码的执行顺序来实现我们要完成的功能。

简单理解: 流程控制就是来控制我们的代码按照什么结构顺序来执行

流程控制主要有三种结构,分别是顺序结构、分支结构和循环结构,这三种结构代表三种代码执行的顺序。

在这里插入图片描述


2. 顺序流程控制

顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序会按照 代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

在这里插入图片描述


3. 分支流程控制if语句

3.1 分支结构

由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果

在这里插入图片描述

JS语言提供了两种分支结构语句

  • if 语句
  • switch 语句

3.2 if语句

1. 语法结构

// 条件成立执行代码,否则什么也不做
if (条件表达式) {
	// 条件成立执行的代码语句
}

语句可以理解为一个行为,循环语句和分支语句就是典型的语句。一个程序由很多个语句组成,一般情况下,会分割成一个一个的语句。

2. 执行流程

在这里插入图片描述


12 - if分支语句

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>12 - if分支语句</title>
    <script>
        // 1. if 的语法结构   如果if
        // if (条件表达式) {
        //     // 执行语句
        // }

        // 2. 执行思路  如果 if 里面的条件表达式结果为真 true 则执行大括号里面的 执行语句 
        // 如果if 条件表达式结果为假 则不执行大括号里面的语句 则执行if 语句后面的代码
        // 3. 代码体验
        if (3 < 5) {
            alert('沙漠骆驼');
        }
    </script>
</head>
<body>

</body>
</html>

13 - 进入网吧案例

案例: 进入网吧

弹出一个输入框,要求用户输入年龄,如果年龄大于等于 18 岁,允许进网吧。

案例分析

  • 弹出 prompt 输入框,用户输入年龄, 程序把这个值取过来保存到变量中
  • 使用 if 语句来判断年龄,如果年龄大于18 就执行 if 大括号里面的输出语句
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>13 - 进入网吧案例</title>
    <script>
        var age = prompt('请输入您的年龄:');
        if (age >= 18) {
            alert('您的年龄合法,欢迎来天际网吧享受学习的乐趣!');
        }
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


3.3 if else语句(双分支语句)

1. 语法结构

// 条件成立 执行 if 里面代码,否则执行else 里面的代码
if (条件表达式) {
	// [如果] 条件成立执行的代码
} else {
	// [否则] 执行的代码
}

2. 执行流程

在这里插入图片描述


14 - if else双分支语句

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>14 - if else双分支语句</title>
    <script>
        // 1. 语法结构  if 如果  else 否则
        // if (条件表达式) {
        //     // 执行语句1
        // } else {
        //     // 执行语句2 
        // }
        // 2. 执行思路 如果表达式结果为真 那么执行语句1  否则  执行语句2
        // 3. 代码验证
        var age = prompt('请输入您的年龄:');
        if (age >= 18) {
            alert('我想带你去网吧偷耳机');
        } else {
            alert('滚, 回家做作业去');
        }
        // 5. if里面的语句1 和 else 里面的语句2 最终只能有一个语句执行  2选1
        // 6. else 后面直接跟大括号
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


15 - 判断闰年案例

案例 2:判断闰年

接收用户输入的年份,如果是闰年就弹出闰年,否则弹出是平年

案例分析

  • 算法:能被4整除不能整除100的为闰年(如2004年就是闰年,1901年不是闰年)或者 能够被 400 整除的就是闰年
  • 弹出prompt 输入框,让用户输入年份,把这个值取过来保存到变量中
  • 使用 if 语句来判断是否是闰年,如果是闰年,就执行 if 大括号里面的输出语句,否则就执行 else里面的输出语句
  • 一定要注意里面的且 && 还有或者 || 的写法,同时注意判断整除的方法是取余为 0

15 - 判断闰年案例

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>15 - 判断闰年案例</title>
    <script>
        var year = prompt('请您输入年份:');
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            alert('您输入的年份是闰年');
        } else { // 剩下的是平年
            alert('您输入的年份是平年');
        }
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


3.4 if else if语句(多分支语句)

1. 语法结构

// 适合于检查多重条件。
if (条件表达式1) {
	语句1;
} else if (条件表达式2) {
	语句2;
} else if (条件表达式3) {
	语句3;
....
} else {
	// 上述条件都不成立执行此处代码
}

2. 执行流程

在这里插入图片描述

16 - if else if多分支语句

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>16 - if else if多分支语句</title>
    <script>
        // 1. 多分支语句   就是利用多个条件来选择不同的语句执行 得到不同的结果  多选1 的过程
        // 2. if else if语句是多分支语句
        // 3. 语法规范
        if (条件表达式1) {
            // 语句1;
        } else if (条件表达式2) {
            // 语句2;
        } else if (条件表达式3) {
            // 语句3;
        } else {
            // 最后的语句;
        }
        // 4. 执行思路
        // 如果条件表达式1 满足就执行 语句1 执行完毕后,退出整个if 分支语句  
        // 如果条件表达式1 不满足,则判断条件表达式2  满足的话,执行语句2 以此类推
        // 如果上面的所有条件表达式都不成立,则执行else 里面的语句
        // 5. 注意点
        // (1) 多分支语句还是多选1 最后只能有一个语句执行
        // (2) else if 里面的条件理论上是可以任意多个的
        // (3) else if 中间有个空格了
    </script>
</head>
<body>

</body>
</html>

17 - 判断成绩案例

案例: 判断成绩级别

要求:接收用户输入的分数,根据分数输出对应的等级字母 A、B、C、D、E。

其中:

  1. 90分(含)以上 ,输出:A
  2. 80分(含)~ 90 分(不含),输出:B
  3. 70分(含)~ 80 分(不含),输出:C
  4. 60分(含)~ 70 分(不含),输出:D
  5. 60分(不含) 以下,输出: E

案例分析

  1. 按照从大到小判断的思路
  2. 弹出prompt输入框,让用户输入分数,把这个值取过来保存到变量中
  3. 使用多分支 if else if 语句来分别判断输出不同的值
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>17 - 判断成绩案例</title>
    <script>
        // 伪代码 按照从大到小判断的思路
        // 弹出prompt输入框,让用户输入分数(score),把这个值取过来保存到变量中
        // 使用多分支 if else if 语句来分别判断输出不同的值
        var score = prompt('请您输入分数:');
        if (score >= 90) {
            alert('宝贝,你是我的骄傲');
        } else if (score >= 80) {
            alert('宝贝,你已经很出色了');
        } else if (score >= 70) {
            alert('你要继续加油喽');
        } else if (score >= 60) {
            alert('孩子,你很危险');
        } else {
            alert('熊孩子,我不想和你说话,我只想用鞭子和你说话');
        }
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


4. 三元表达式

三元表达式也能做一些简单的条件选择。 有三元运算符组成的式子称为三元表达式

1. 语法结构

表达式1 ? 表达式2 : 表达式3;

2. 执行思路

  • 如果表达式1为 true ,则返回表达式2的 ,如果表达式1为 false,则返回表达式3的
  • 简单理解: 就类似于 if else (双分支) 的简写

18 - 三元表达式

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>18 - 三元表达式</title>
    <script>
        // 1. 有三元运算符组成的式子我们称为三元表达式
        // 2. ++num     3 + 5     ? :
        // 3. 语法结构 
        // 条件表达式 ? 表达式1 : 表达式2
        // 4. 执行思路
        // 如果条件表达式结果为真 则 返回 表达式1 的值 如果条件表达式结果为假 则返回 表达式2 的值
        // 5. 代码体验
        var num = 10;
        var result = num > 5 ? '是的' : '不是的'; // 我们知道表达式是有返回值的
        console.log(result);
        // if (num > 5) {
        //     result = '是的';
        // } else {
        //     result = '不是的';
        // }
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


19 - 数字补0案例

案例: 数字补0

用户输入数字,如果数字小于10,则在前面补 0 ,比如01,09 ,如果数字大于10,则不需要补,比如 20。

案例分析

  1. 用户输入0~59之间的一个数字
  2. 如果数字小于10,则在这个数字前面补0,(加0 拼接) 否则 不做操作
  3. 用一个变量接受这个返回值,输出
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>19 - 数字补0案例</title>
    <script>
        var time = prompt('请您输入一个 0 ~ 59 之间的一个数字');
        // 三元表达式   表达式 ? 表达式1 :表达式2 
        var result = time < 10 ? '0' + time : time; //   把返回值赋值给一个变量
        alert(result);
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


5. 分支流程控制 switch 语句

5.1 语法结构

switch 语句也是多分支语句,它用于基于不同的条件来执行不同的代码。当要针对变量设置一系列的特定值的选项时,就可以使用 switch。

switch( 表达式 ) { 
	case value1:
		// 表达式 等于 value1 时要执行的代码
		break;
	case value2:
		// 表达式 等于 value2 时要执行的代码
		break;
	default:
		// 表达式 不等于任何一个 value 时要执行的代码
}
  • switch :开关 转换 , case :小例子 选项
  • 关键字 switch 后面 括号内 可以是 表达式, 通常是一个 变量
  • 关键字 case , 后跟一个选项的表达式或值,后面跟一个冒号
  • switch 表达式的值会与结构中的 case 的值做比较
  • 如果存在匹配 全等(===) ,则与该 case 关联的代码块会被执行,并在遇 到 break 时停止,整个 switch 语句代码执行结束
  • 如果所有的 case 的值都和表达式的值不匹配,则执行 default 里的代码

注意: 执行case 里面的语句时,如果没有break,则继续执行下一个case里面的语句。

20 - switch分支语句

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>20 - switch分支语句</title>
    <script>
        // 1. switch 语句也是多分支语句 也可以实现多选1
        // 2. 语法结构 switch 转换、开关  case 小例子或者选项的意思
        // switch (表达式) {
        //     case value1:
        //         执行语句1;
        //         break;
        //     case value2:
        //         执行语句2;
        //         break;
        //         ...
        //         default:
        //             执行最后的语句;
        // }
        // 3. 执行思路  利用我们的表达式的值 和 case 后面的选项值相匹配 如果匹配上,就执行该case 里面的语句  如果都没有匹配上,那么执行 default里面的语句
        // 4. 代码验证
        switch (8) {
            case 1:
                console.log('这是1');
                break;
            case 2:
                console.log('这是2');
                break;
            case 3:
                console.log('这是3');
                break;
            default:
                console.log('没有匹配结果');
        }
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


21 - switch注意事项

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>21 - switch注意事项</title>
    <script>
        // switch注意事项
        var num = 1;
        switch (num) {
            case 1:
                console.log(1);

            case 2:
                console.log(2);

            case 3:
                console.log(3);
                break;
        }
        // 1. 我们开发里面 表达式我们经常写成变量
        // 2. 我们num 的值 和 case 里面的值相匹配的时候是 全等   必须是值和数据类型一致才可以 num === 1
        // 3. break 如果当前的case里面没有break 则不会退出switch 是继续执行下一个case
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


22 - 查询水果案例

案例: 查询水果

用户在弹出框里面输入一个水果,如果有就弹出该水果的价格, 如果没有该水果就弹出“没有此水果”

案例分析

  1. 弹出 prompt 输入框,让用户输入水果名称,把这个值取过来保存到变量中。
  2. 将这个变量作为 switch 括号里面的表达式。
  3. case 后面的值写几个不同的水果名称,注意一定要加引号 ,因为必须是全等匹配。
  4. 弹出不同价格即可。同样注意每个 case 之后加上 break ,以便退出 switch 语句。
  5. 将 default 设置为没有此水果。
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>22 - 查询水果案例</title>
    <script>
        var fruit = prompt('请您输入查询的水果:');
        switch (fruit) {
            case '苹果':
                alert('苹果的价格是 3.5/斤');
                break;
            case '榴莲':
                alert('榴莲的价格是 35/斤');
                break;
            default:
                alert('没有此水果');
        }
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述


5.2 分支流程控制switch语句的区别

  1. 一般情况下,它们两个语句可以相互替换
  2. switch…case 语句通常处理 case为比较确定值的情况,而 if…else…语句更加灵活,常用于范围判断(大于、
    等于某个范围)
  3. switch 语句进行条件判断后直接执行到程序的条件语句,效率更高。而if…else 语句有几种条件,就得判断多少次。
  4. 当分支比较少时,if… else语句的执行效率比 switch语句高。
  5. 当分支比较多时,switch语句的执行效率比较高,而且结构更清晰。

作业

  1. 判断时间阶段。 比如 用户输入12点 弹出 中午好 用户输入 18点 弹出傍晚好 用户输入 23点 弹出深夜好
  2. 比较两个数的最大值 (用户依次输入2个值,最后弹出最大的那个值)
  3. 用户输入一个数,来判断是奇数还是偶数
  4. 根据用户输入的数值(数字1 到 数字 7),返回星期几
  5. 接收班长口袋里的钱数?若大于等于2000,请大家吃西餐。若小于2000,大于等于1500,请大家吃快餐。
    若小于1500,大于等于1000,请大家喝饮料。若小于1000,大于等于500,请大家吃棒棒糖。否则提醒班长下次把钱带够
  6. 分数转换,给一个分数,判定等级。大于等于90 A,大于等于80小于90 B,大于等于70小于80 C ,大于
    等于60小于70 D,小于60 E
  7. 预习下 循环控制 for 循环
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>作业</title>
	<script>
		// 1. 判断时间阶段。 比如 用户输入12点 弹出 中午好 用户输入 18点 弹出傍晚好 用户输入 23点 弹出深夜好 
        var time = prompt('请问现在几点了?');
        if(time >= 3 && 6 >= time){
            alert('凌晨好');
        }else if(8 >=  time){
            alert('早晨好');
        }else if(11 >=  time){
            alert('上午好');
        }else if(13 >=  time){
            alert('中午好');
        }else if(17 >=  time){
            alert('下午好');  
        }else if(19 >=  time){
            alert('傍晚好');
        }else if(23 >=  time){
            alert('晚上好');
        }else {
            alert('深夜好');
        }

        // 2. 比较两个数的最大值 (用户依次输入2个值,最后弹出最大的那个值) 
        var num1 = prompt('请输入一个数');
        var num2 = prompt('请输入一个数');
        alert((num1 > num2) ? num1 : num2);

        // 3. 用户输入一个数,来判断是奇数还是偶数
        var user = prompt('请输入一个数');
        alert((user % 2 == 0) ? '偶数' : '奇数');

        // 4. 根据用户输入的数值(数字1 到 数字 7),返回星期几 
        var week = prompt('请输入日期数:');
        switch(parseInt(week)){
            case 1:
                alert('今天星期一');
                break;
            case 2:
                alert('今天星期二');
                break;
            case 3:
                alert('今天星期三');
                break;
            case 4:
                alert('今天星期四');
                break;
            case 5:
                alert('今天星期五');
                break;
            case 6:
                alert('今天星期六');
                break;
            case 7:
                alert('今天星期日');
                break;
            default:
                alert('输入的日期不在数字1到数字7范围内');
        }

        // 5. 接收班长口袋里的钱数?若大于等于2000,请大家吃西餐。若小于2000,大于等于1500,请大家吃快餐。
        // 若小于1500,大于等于1000,请大家喝饮料。若小于1000,大于等于500,请大家吃棒棒糖。否则提醒班长下次把钱带够
        var money = prompt('班长口袋里的钱数是多少?');
        if(money >= 2000){
            alert('请大家吃西餐');
        }else if(money >= 1500){
            alert('请大家吃快餐');
        }else if(money >= 1000){
            alert('请大家喝饮料');
        }else if(money >= 500){
            alert('请大家吃棒棒糖');
        }else {
            alert('班长下次把钱带够');
        }

        // 6. 分数转换,给一个分数,判定等级。大于等于90 A,大于等于80小于90 B,大于等于70小于80 C ,大于
        // 等于60小于70 D,小于60 E 
        var fraction = prompt('请输入分数');
        if (fraction >= 90) {
            alert('A')
        } else if (fraction >= 80) {
            alert('B')
        } else if (fraction >= 70) {
            alert('C')
        } else if (fraction >= 60) {
            alert('D')
        } else {
            alert('E')
        }
	</script>
</head>
<body>

</body>
</html>

在这里插入图片描述


知识总结

算术运算符

  • 算术运算符:对数据进行数学运算 + - * / %
  • JS数学计算不精确
  • 如何判定整数A是否可以被另一个整数a整除:A%a == 0 ;

表达式和返回值

什么是表达式?
什么是返回值?

  • 表达式:由数据、运算符、变量组成的式子;
  • 返回值:每一个表达式经过相应的运算之后,会有一个最终结果,称为表达式的返回值

前置递增运算符

num += 1;是如何进行运算的?
如何让变量自加/减1?

  • num += 1; 和 num = num + 1;效果相同
  • 前置递增:++num;先自加 再返回值
  • 前置递增:- -num;先自减 再返回值

后置递增运算符

后置递增/递减可以让变量的值加/减1吗?
前置自增和后置自增有什么分别?

  • 后置递增:++num;先返回原值 再自加
  • 后置递增:–num;先返回原值 再自减

比较运算符

什么是比较运算符?
如何判定“大于等于”关系?
比较运算符中 "=="和 "==="有什么分别?
比较运算符只能比较数值吗?

  • 比较运算符:比较数据之间的关系的运算符,运算后的返回值是布尔值(true、false)

  • 大于等于的判定方式为:">="

  • 比较运算符中:"=="只判定值是否相等,不判定数据类型;而 "==="表示 "全等"则要值和数据类型都相等才能返回值为true;

  • 比较运算符可以对除数值型数据之外的数据进行比较判断


逻辑中断逻辑或

且运算&&的中断逻辑是什么?
或运算||的中断逻辑是什么?

  • 逻辑中断:短路运算
  • 且运算 && 的中断逻辑:
    • 如果 && 之前的数据转化为布尔值为true,则整个表达式返回&&后面的数据;如果&&之前的数据转化为布尔值为false,则返回&&前面的数据;
  • 或运算 || 的中断逻辑是什么?
    • 如果 || 之前的数据转化为布尔值为true,则整个表达式返回 || 前面的数据;如果 || 之前的数据转化为布尔值为false,则返回 || 后面的数据;

赋值运算符

"==“和”==="的区别?

  • " = ":赋值运算符
  • " == ":相等运算符
  • " === ":全等运算符
  • " +="、"-="、"*="、"/="、"%= "

运算符优先级

运算符的种类有哪些?
不同的运算符的计算先后顺序是什么?

  • 一元运算符里面的逻辑非优先级很高
  • 逻辑与比逻辑或优先级高
    在这里插入图片描述

流程控制

什么是流程控制?
什么是顺序结构?
什么是分支结构?
什么是循环结构?

在这里插入图片描述


if分支语句

  • 分支结构:通过判断"条件表达式",选择要执行的分支
  • if 分支语句:
    if( 条件表达式 ){ 
    	条件表达式转化为布尔值为true时执行 
    }
    

在这里插入图片描述


ifelse双分支语句

  • 双分支结构:
    if( 条件表达式 ){ 
    	执行语句1}else{
    	执行语句2}
    

在这里插入图片描述


if else if多分支语句

  • 双分支结构:
    if( 条件表达式1{ 
    	执行语句1}else if( 条件表达式2 ){
    	执行语句2}else{
    	执行语句3}
    

在这里插入图片描述


三元表达式

条件判断?表达式1:表达式2;


switch语句

switch( 表达式 ){
	case value1:
	    执行语句1;
	    break;
	case value2:
	    执行语句2;
	    break;
	default:
	    执行最后的语句;
}

switch 注意事项

  • switch中表达式和value值比较时为全等比较
  • break如果不书写的话会继续指向后面的执行语句,直到再次执行break;

switch 和 ifelseif区别

  • 一般情况下,它们两个语句可以相互替换
  • switch…case 语句通常处理 case为比较确定值的情况, 而 if…else…语句更加灵活,常用于范围判断(大于、等于某个范围)
  • switch 语句进行条件判断后直接执行到程序的条件语句,效率更高。而if…else 语句有几种条件,就得判断多少次。
  • 当分支比较少时,if… else语句的执行效率比 switch语句高。
  • 当分支比较多时,switch语句的执行效率比较高,而且结构更清晰。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章