《部分案例代码下载》
学习目标(全天模式)
- 能够把其它转换成Number类型/String类型
- 能够使用if语句实现求两个数最大值
- 能够写出数字补0案例
- 能够使用switch完成查询水果案例
- 能够说出switch和if else if的区别
- 能够使用循环语句重复执行一段代码
- 能够使用断点调试代码
。。。。。。
理解上课的知识点……
比较运算符(关系运算符)
<、 <= 、> 、>=、==、!=、=== 、!==
比较运算符的结果是布尔类型(true/false)
1 | // > 、>= 、< 、<= 比较大小、结果(返回的)为布尔值(简单的过一遍) |
总结:
= 赋值
把一个值赋值给变量== 相等
只比较内容 (只要内容相等就是true)。12 == '12' => true
=== 全等
比较内容和类型(必须内容和类型都相等才是true)。12 === '12' => false
运算符优先级(了解)
运算符之间存在优先级关系(先算哪个呢?)
()
的优先级最高一元运算符
(++、--、!)
算术运算符
(先 *、/、%, 后 +、- )
比较运算符
(先 >、<、 >= 、<=, 后== 、=== 、!= 、!==)
逻辑运算符
(先 && 后 || )
1 | // 记忆方法: |
不用死记,在开发过程中要先算的直接使用()增加优先级即可!!
ヾ(๑╹◡╹)ノ”猜猜看
1 | var result = ((4 >= 6) || ("天" != "地")) && !(((12 * 2) == 144) && true); |
表达式的介绍(了解)
表达式:就是可以由数字、运算符、变量等组成的有结果的式子
比如:1 + 1 、a++、++num、a、b、’abc’、123……,一般可以直接打印出结果的就是一个表达式
表达式的特点:表达式最终都会有一个结果,返回给我们。
类型转换
为什么要进行类型转换
在实际的开发过程中,有时候需要进行不同数据类型之间的转换
1 | // 比如输入年龄,计算明年的年龄,演示使用输入框获取数据,此时获取的数据是字符串,如果直接相加是拼接 |
转换成数字类型
转换成number类型
Number(值)
1
2var str = '300';// str 是字符串 字符串打印是黑色
console.log( Number(str) );// 数字类型打印是蓝色parseInt(值)
把数据转换成数字类型(只能是整数)
1
2
3
4
5var str = '300';
console.log( parseInt(str) );// 300
// -----------------------------------只能转换出整数部分,从小数点开始不转换
var str = '3.1415926';
console.log( parseInt(str) );// 3parseFloat(值)
把数据转换成数字类型(可以是浮点数)
1
2
3
4
5var str = '300';
console.log( parseFloat(str) );// 300
// -----------------------------------可以转换成小数
var str = '3.1415926';
console.log( parseFloatt(str) );// 3.1415926特殊用法: parseInt()和parseFloat()可以获取字符串开头的数字
1
2
3
4// 之后可能会需要计算样式属性值,此时可以通过以上方法提取开头的数字
var str = '100px';
console.log(parseInt(str));
console.log(parseFloat(str));进行运算
算术运算符中除了+之外,其他元素运算符只有运算的功能,都会转化成数字类型
所以只需要进行不改变值的计算即可
1
2
3
4var str = '600';
console.log(str - 0);
console.log(str * 1);
console.log(str / 1);正号(用的最多)
1
2var str = '600';
console.log( +str);
转换成字符串类型
转换成字符串,手动加””即可,但是项目中需要通过js来控制
String(值)
1
2var num = 100;
console.log(String(num));// 字符串的100值.toString()
1
2var num = 100;
console.log( num.toString() );// 字符串的100拼接字符串
1
2
3var num = 100;
console.log( num + 'abc' );// 字符串 100abc
console.log( num + '' );// 字符串的 100
————————
转换成布尔类型(boolean)
所有的值都可以转换成布尔类型
Boolean(值)
1
2console.log( Boolean(123) );
console.log( Boolean('123') );
转化布尔类型的规则:只有 0
、 ""
、 undefined
、null
、false
、 NaN
、这6个值会转换成false,其他都是true。
ヾ(๑╹◡╹)ノ” 容易错的几个
1 | console.log(Boolean(false)); |
!! 非非
取反一次可以转化成布尔值,但是结果不对,所以需要取反两次保证值一样。
1
2
3console.log( Boolean(3));
console.log( !3 );
console.log( !!3 );
NaN(了解)
NaN:
NaN:not a number
在js中,如果把无法用数字表示的值转换为数字类型,此时浏览器不会报错,会用NaN表示。
如果代码中出现了NaN,表示代码中有问题,将不能转换为数字的数据转化为数字了!
1 | var str = 'abc'; |
注意点:
NaN的类型是number类型,表示一个非数字
NaN不等于任何值,包括它自己(六亲不认)
流程控制
程序的三种基本结构
顺序结构
从上往下执行的代码就是顺序结构
程序默认就是由上往下一行一行的顺序执行的
1 | console.log( '哈哈1' ); |
分支结构
分支结构:也叫选择结构,根据不同的情况,执行对应代码
比如路过一家烤鸭店~
循环结构
循环结构:重复做一件事情
比如男男女女的事情~
分支结构
if语句
单独的if语句
1
2
3
4
5
6
7
8
9
10
11// 语法
if (条件) {
// 只有当满足条件时(true),才执行代码
代码;
}
//--------------------------------------------------
// 如果成年了,就吃鸡了
var age = 10;
if (age >= 18) {
console.log('今晚吃鸡,大吉大利')
}if…else语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16// 语法
if (条件) {
// 当满足条件1时,执行的代码1
代码1;
} else {
// 当不满足条件1时,执行的代码2(否则)
代码2;
}
//---------------------------------------------------
// 如果是成年人去吃鸡,否则喜洋洋
var age = 10;
if (age >= 18) {
console.log('快去吃鸡');
}else {
console.log('回家喜洋洋');
}if…else if…else语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28// 语法
if (条件1) {
// 当条件1为 true(满足条件1) 时执行的代码1
代码1;
}
else if (条件2){
// 当条件2 为true (满足条件2) 时执行的代码2
代码2;
}
....
else {
// 当条件1和 条件2 都不为true (上面所有条件都不满足)时执行的代码3
代码3;
}
//--------------------------------------------------
// 如果是0~18岁,回家喜洋洋
// 如果是18~80岁,吃鸡
// 如果是80以上,广场舞等你
var age = 10;
if(age < 18) {
console.log("回家喜洋洋");
}
else if( age >= 18){
console.log("吃鸡");
}
else {
console.log("广场舞等你");
}
————————
ヾ(๑╹◡╹)ノ” if语句小练习:
1 | //1、判断一个数是偶数还是奇数 |
三元运算符
用于处理简单的判断
1 | // 用法 |
ヾ(๑╹◡╹)ノ” 小练习
可以先使用if…else完成,再改写成三元表达式
1 | // 1、求两个数的最小值 |
switch语句
switch..case可以用来判断具体值的情况
语法:
1 | /* |
需求:
1 | // 请输入一个数字 0-6 之间, 0表示周日, 1表示周1, 2表示周2 ....在输入框中输入,在控制台中打印结果 |
注意点:
- switch语句进行的是全等比较,值和类型都相同才满足条件(10和’10’不同)
- 如果break省略了,代码会继续执行下一个case。
————————
ヾ(๑╹◡╹)ノ” switch测试题
1 | var num = "10"; |
ヾ(๑╹◡╹)ノ” switch小练习
1 | // 查询水果案例:用户在输入框中输入一个水果,如果有该水果就弹出价格,如果没有该水果就弹出"没有此水果" |
使用场景
- if…else适合:范围性的判断(条件是一个范围)
- switch适合:具体值的判断(条件为是否是一个具体的值)
- 三元运算符:可以改写简单的if…else语句
ヾ(๑╹◡╹)ノ” 作业
1 | //练习1:土豪的儿子, 输入ABCDE |
循环语句
在javascript中,循环语句有三种while、do..while、for循环。
需求: 需要打印1~5怎么做?
很简单,写5个console.log即可
1
2
3
4
5console.log(1);
console.log(2);
console.log(3);
console.log(4);
console.log(5);那么打印1~100还能这么写吗?
针对于需要重复执行的代码,此时就需要使用循环语句完成
while循环
先问可不可以,同意了再执行代码……
语法:
1 | while(循环条件){ |
ヾ(๑╹◡╹)ノ” 通过while循环,打印 1~5
,再打印 1~100
,再求和?
1 | var i = 1;// 初始化语句 |
注意点:
- 循环一定要能结束(否则就是死循环)——》在循环体中,需要让条件中的变量能变化!!!
————————
ヾ(๑╹◡╹)ノ” while的练习
1 | //1. 计算1~100之间所有偶数的和 |
1 | //2. 循环表白案例:弹出一个确认框confirm,问是否爱我,如果选择不,就一直问,直到是为止 |
1 | //3. 循环登录案例:弹出一个输入框prompt,只有当用户输入admin的时候才能登录成功,如果不正确,就一直弹框 |
do..while循环
do..while循环和while循环非常像,二者经常可以相互替代,但是do..while的特点是不管条件成不成立,都会执行一次。
区别在于:先执行一遍,再问可不可以,同意了在执行一遍……
语法:
1 | do{ |
ヾ(๑╹◡╹)ノ” 通过do…while循环,打印 1~5
,再打印 1~100
先使用while语句写出来,再通过do…while改写一下
1 | var i = 1;// 初始化语句 |
注意点:
区别
while语句:先判断,如果成立,再执行循环体……
如果条件开始就不成立,一次都不会执行
do…while语句:先执行循环体,再判断,如果成立,再执行循环体……
如果条件开始就不成立,也会执行一次
while用的场景较多,do…while很少会用到,但是需要知道区别。
ヾ(๑╹◡╹)ノ” do…while的练习
1 | //1. 计算1~100之间所有偶数的和 |
课后自己试着把之前的while连写改写成do…while看看可不可以
for循环(重点)
写while循环的经常会忘记自增,for循环其实是while循环演化过来的,语法更加的简洁明了,使用非常的广泛。
语法:
1 | for(初始化语句;判断条件;自增或自减){ |
顺序:
语句
- 初始化语句
- 判断条件
- 自增或者自减
- 循环体
序号表示顺序:
- 1243
- 243
- 243
- …..
- 初始化语句只执行一次,之后就是243一直循环
ヾ(๑╹◡╹)ノ” 先使用while语句完成打印 1~5
,再改写成for循环,再打印 1~100
1 | var i = 0; |
————————
断点调试
对于以上for循环的执行顺序,可以通过断点调试查看代码执行的顺序
先简单了解,之后会不断拓展用法
ヾ(๑╹◡╹)ノ” 使用for循环计算1~100所有数的和
1 | var sum = 0; |
接下来通过断点调试查看以上代码的执行顺序
操作:
设置断点
打开控制台,查看sources窗口,点开对应的文件
在对应的行号上点一下(高亮表示一个断点),此时刷新页面,浏览器会自动在断点这一行停止执行。
打上断点好比告诉浏览器代码执行到这一行,停下来容我看看
如何查看
watch窗口:在右侧+中写变量名,可以监视变量值的变化
watch中会实时展示该变量当前的值是多少
往下执行一步(第二个按钮):可以让代码往下执行一步
执行到下一个断点(第一个按钮):可以让代码瞬间执行到下一个断点的位置停下
调试完断点之后记得再点击一下删除掉,否则重新刷新又会在断点处停下。
ヾ(๑╹◡╹)ノ” for循环练习1
1 | //1 求1-100之间所有数的和、平均值(和除以个数即可) |
ヾ(๑╹◡╹)ノ” for循环练习2
1 | //1 计算1-100之间不能被7整除的数的和 |