语句
-
表达式和语句
x=7 3+4 num++
-
表达式:表达式是可以被求值的代码,JavaScript 引擎会将其计算出一个结果。
-
目标:能说出表达式和语句的区别
-
语句: 语句是一段可以执行的代码。 比如: prompt() 可以弹出一个输入框,还有 if语句 for 循环语句等等
-
-
目标:能说出表达式和语句的区别
-
区别:
-
表达式:因为表达式可被求值,所以它可以写在赋值语句的右侧。
-
表达式 num = 3 + 4
-
-
语句:而语句不一定有值,所以比如 alert() for和break 等语句就不能被用于赋值。
-
语句 alert() 弹出对话框 console.log() 控制台打印输出
-
-
-
某些情况,也可以把表达式理解为表达式语句,因为它是在计算结果,但不是必须的成分 (例如continue语句 )
-
-
-
分支语句
-
目标:掌握流程控制,写出能“思考”的程序
-
学习路径:
-
程序三大流程控制语句
-
以前我们写的代码,写几句就从上往下执行几句,这种叫顺序结构
-
有的时候要根据条件选择执行代码,这种就叫分支结构
-
某段代码被重复执行,就叫循环结构
-
-
分支语句
-
分支语句可以让我们有选择性的执行想要的代码
-
分支语句包含:
-
If分支语句
//单分支使用语法: if(条件){ 满足条件要执行的代码 } //括号内的条件为true时,进入大括号里执行代码 //小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型 //如果大括号只有一个语句,大括号可以省略,但是,俺们不提倡这么做~
-
if语句有三种使用:单分支、双分支、多分支
-
单分支
//单分支课堂案例1:用户输入高考成绩 let score = (prompt("请输入你的高考成绩:")) // 如果分数大于700, if (score > 700) { alert("恭喜考入黑马程序员") }
-
双分支
//双分支课堂案例 // 需求:用户输入,用户名:pink,密码:123456, 则提示登录成功,否则提示登录失败 let name = prompt("请输入用户名") let pwd = prompt("请输入密码") if (name == "pink" && pwd == "123456") { alert("登录成功") } else { alert("登录失败") } //年份 // 让用户输入年份,判断这一年是闰年还是平年并弹出对应的警示框 // 1.year % 4 == 0: 这个条件检查年份是否能被4整除。% 是取模运算符, // 用于计算两个数相除的余数。如果 year 除以4的余数是0,说明 year // 可以被4整除,这是成为闰年的第一个基本要求。 //2. year % 100 != 0: 这个条件检查年份是否不能被100整除。 //同样使用取模运算符 % 来计算 year 除以100的余数。如果余数不是0,说明 year 不能被100整除。 //这个条件是为了排除那些虽然能被4整除但也能被100整除的年份,因为这样的年份通常不是闰年(除非是第三个条件所说的特殊情况)。 //3. year % 400 == 0: 这个条件检查年份是否能被400整除。使用取模运算符 % 来计算 // year 除以400的余数。如果余数是0,说明 year 可以被400整除。这是一个特殊情况, //即使一个年份能被100整除,只要它还能被400整除,它仍然是闰年。 var year = prompt("请输入年份:"); if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { alert(year + "是闰年!"); } else { alert(year + "是平年!"); }
-
多分支
-
使用场景: 适合于有多个结果的时候, 比如学习成绩可以分为: 优 良 中 差
-
释义:
if(条件1){ 代码1 }else if(条件2){ 代码2 }else if(条件3){ 代码3 }else{ 代码n } // 判断成绩等级 var a = prompt("请输入成绩:"); if (a >= 90) { alert("优秀"); } else if (a >= 80) { alert("良好"); } else if (a >= 70) { alert("中等"); } else if (a >= 60) { alert("及格"); } else { alert("不及格"); }
-
先判断条件1,若满足条件1就执行代码1,其他不执行
-
若不满足则向下判断条件2,满足条件2执行代码2,其他不执行
-
若依然不满足继续往下判断,依次类推
-
若以上条件都不满足,执行else里的代码n
-
注:可以写N个条件,但这里演示只写2个
-
-
-
-
三元运算符
// 用户输入2个数,控制台输出最大的值,用三元运算符实现 var num1 = prompt("请输入第一个数:"); var num2 = prompt("请输入第二个数:"); var max = num1 > num2 ? num1 : num2; console.log(max); // 用户输入2个数,控制台输出最小的值,用三元运算符实现 var num1 = prompt("请输入第一个数:"); var num2 = prompt("请输入第二个数:"); var min = num1 < num2 ? num1 : num2; console.log(min); //用户输入1个数,如果数字小于10,则前面进行补0, 比如 09 03 等,用三元运算符实现 var num = prompt("请输入一个数字"); var newNum = num < 10 ? "0" + num : num; console.log(newNum);
-
目标:能利用三元运算符执行满足条件的语句
-
使用场景: 其实是比 if 双分支 更简单的写法,可以使用 三元表达式
-
符号:? 与 : 配合使用
-
语法: 条件 ? 满足条件执行的代码 : 不满足条件执行的代码 一般用来取值
-
-
switch 语句
switch(数据){ case 值1: 代码1 break case 值2: 代码2 break default: 代码n break } //释义: // 找到跟小括号里数据全等的case值,并执行里面对应的代码 // 若没有全等 === 的则执行default里的代码 // 例:数据若跟值2全等,则执行代码2 //1. switch case语句一般用于等值判断,不适合于区间判断 //2. switch case一般需要配合break关键字使用 没有break会造成case穿透
//用户输入2个数字,然后输入 + - * / 任何一个,可以计算结果 var num1 = parseInt(prompt("请输入第一个数字")); var num2 = parseInt(prompt("请输入第二个数字")); var sign = prompt("请输入 + - * / 其中一个"); switch (sign) { case "+": alert(num1 + num2); break; case "-": alert(num1 - num2); break; case "*": alert(num1 * num2); break; case "/": if (num2 == 0) { alert("除数不能为零!") } else { alert(num1 / num2); } break; default: alert("输入错误!"); }
-
目标:能利用switch执行满足条件的语句
-
-
-
-
-
-
循环语句
-
目标:掌握循环结构,实现一段代码重复执行
-
断点调试
-
while循环
-
目标:掌握while循环语法,能重复执行某段代码
-
循环:重复执行一些操作, while : 在…. 期间, 所以 while循环 就是在满足条件期间,重复执行某些代码。 比如我们运行相同的代码输出5次(输出5句 “我学的很棒”)
-
路径
-
while 循环基本语法
while(循环条件){ 要重复执行的代码(循环体) } //释义: // 跟if语句很像,都要满足小括号里的条件为true才会进入 循环体 执行代码 // while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,若满足又执行大括号里的代码,然后再回到 小括号判断条件,直到括号内条件不满足,即跳出
-
while 循环三要素
-
循环的本质就是以某个变量为起始值,然后不断产生变化量,慢慢靠近终止条件的过程。 所以,while循环需要具备三要素:
-
-
-
总结
-
-
//使用while循环,页面中打印10句我爱编程,文本打印 let i = 0 while (i < 10) { document.write("我爱编程") i++ } //使用while循环,页面中打印我爱编程,文本打印,打印几次由用户决定 //升级版 let num = parseInt(prompt("请输入打印次数")); let i = 0; while (i < num) { document.write("我爱编程"); i++; } //使用while循环,页面输出1-100的数字,并且每行中打印,可以添加换行效果,小于10的补0 let num = 1; while (num <= 100) { if (num < 10) { console.log("0" + num); } else { console.log(num); } num++; } //使用while循环,计算从1加到100的总和并输出 let sum = 0; let i = 1; while (i <= 100) { // sum=i+sum sum += i;//简写写法 i++; } console.log(sum); //使用while循环,计算1-100之间的所有偶数 let sum = 0; let i = 1; while (i <= 100) { if (i % 2 == 0) { sum += i; } i++; } console.log(`偶数的和是:${sum}`); //使用while循环,计算1-100之间的所有奇数 let sum1 = 0; let i1 = 1; while (i1 <= 100) { if (i1 % 2 != 0) { sum1 += i1; } i1++; } console.log(`奇数的和是:${sum1}`);
-
-
-
循环退出
//页面弹出对话框,‘你爱我吗’,如果输入‘爱’,则结束,否则一直弹出对话框 while (true) { let love = prompt("你爱我吗?"); if (love == "爱") break; }
-
目标: 能说出continue和break的区别
-
循环结束:
-
break:退出循环
-
continue:结束本次循环,继续下次循环
-
-
区别:
-
continue 退出本次循环,一般用于排除或者跳过某一个选项的时候, 可以使用continue
-
break 退出整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用
-
-
-
-
综合案例
//简易ATM取款机案例 需求:用户可以选择1、2、3、4,分别代表存钱、取钱、查看余额和退出功能 // 初始化账户余额 let balance = 0; // 主函数,显示菜单并处理用户选择 function main() { while (true) { // 显示菜单 let choice = prompt("ATM取款机,请选择操作:\n1. 存钱\n2. 取钱\n3. 查看余额\n4. 退出"); // 处理用户选择 switch (choice) { case '1': deposit(); break; case '2': withdraw(); break; case '3': viewBalance(); break; case '4': alert("谢谢使用,再见!"); return; // 退出程序 default: alert("无效的选择,请重新选择。"); } } } // 存钱函数 function deposit() { let amount = parseFloat(prompt("请输入存款金额:")); if (isNaN(amount) || amount <= 0) { alert("请输入有效的存款金额。"); return; } balance += amount; alert("存款成功,当前余额为:" + balance); } // 取钱函数 function withdraw() { let amount = parseFloat(prompt("请输入取款金额:")); if (isNaN(amount) || amount <= 0) { alert("请输入有效的取款金额。"); return; } if (amount > balance) { alert("余额不足,无法取款。"); return; } balance -= amount; alert("取款成功,当前余额为:" + balance); } // 查看余额函数 function viewBalance() { alert("当前余额为:" + balance); } // 运行主函数 main();