概述
流程控制语句
-
条件语句
- if语句
if语句是条件语句, 也称为选择语句. 它通常结合else一起使用, 表示如果…就…否则…
if (测试条件) { // 语句块1 // 当测试条件为真, 则执行这里 } else { // 语句块2 // 当测试条件为假, 则执行这里 }
案例1: 输入一个数字, 如果这个数是偶数, 则弹出对话框显示’偶数’, 否则弹出对话框显示’‘奇数’’
let a = Number(prompt('请输入一个数字')); if (a % 2 == 0) { alert('偶数') } elsse { alert('奇数') }
案例2: 输入年龄, 判断用户是否可以申领驾照. 申领驾照的条件是年龄为18到70岁
let age = Number(prompt('请输入年龄')); if (age >= 18 && age <= 70){ alert('可以考取驾照') } else { alert('年龄不符合要求') }
在if语句中else可以省略
let a = Number(prompt("请输入你喜欢的数字")); if (a > 5) { alert("这是我喜欢的数字!"); } if (a % 2 == 0) { alert("这是偶数"); } alert("88");
单行if 语句 : 如果if语句体中只有一行语句, 可以省略大括号和换行
var a = Number (prompt('请输入一个整数')); if(a > 5) alert('这个数字大于5'); if(a % 2 == 0) alert('这个数字是偶数'); alert('再见');
- if else if多条件分支
案例1:
let score = Number(prompt("请输入考试成绩")); if (score == 100) { alert("膜拜学霸"); } else if (score >= 95) { alert("再接再厉"); } else if (score >= 80) { alert("考的不错"); } else if (score >= 60) { alert("及格啦"); } else if (score < 60) { alert("去重读"); }
案例2: 计算BMI肥胖指数, 返回对应指数结果
let weight = Number(prompt("请输入体重")); let height = Number(prompt("请输入身高")); let BMI = weight / (height * height); if (BMI > 32) { alert("非常肥胖"); } else if (BMI > 28) { alert("肥胖"); } else if (BMI > 24) { alert("过胖"); } else if (BMI > 18.5) { alert("正常"); } else { alert("过廋"); }
- if 语句算法题
案例1: 判断水仙花数
水仙花数是指: 它的每个数位的数字的立方和等于它本身
// 要求用户输入一个三位数
let n = Number(prompt("请输入一个三位数"));
// 对用户输入的数值, 进行合法性的验证
if (!isNaN(n) && n >= 100 && n <= 999) {
// 当用户输入的数字合法时
// 方法一 : 数学方法(复杂)
/* let a = Math.floor(n / 100);
let b = Math.floor(n / 10) % 10;
let c = n % 10; */
// 方法二 : 字符串方法
let n_str = n.toString();
let a = Number(n_str.charAt(0));
let b = Number(n_str.charAt(1));
let c = Number(n_str.charAt(2));
// 根据水仙花数的条件进行判断
if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == n) { // Math.pow(a, 3) 意为a 的 3 次方
alert("这个数是水仙花数");
} else {
alert("这个数字不是水仙花数");
}
} else {
alert("输入的数字不合法");
}
案例2: 游乐园门票计算
用户输入年龄和星期几, 弹出对话框显示门票价格,
条件 | 年龄大于等于10岁 | 年龄小于10岁 |
---|---|---|
平日 | 300 | 140 |
周末 | 500 | 210 |
// 用户输入星期几
let day = Number(prompt("请输入星期几"));
// 用户输入年龄
let age = Number(prompt("请输入年龄"));
// 思路: 使用if else嵌套逻辑, 先判断星期几, 再判断年龄, 最后输出
if (day == 0 || day == 6) {
// 在周末
if (age >= 10) {
// 判断年龄
alert("500全票");
} else {
alert("210儿童票");
}
} else {
// 不在周末
if (age >= 10) {
// 判断年龄
alert("300全票");
} else {
alert("140儿童票");
}
}
- switch语句
除了if语句之外, JS还提供了另外一种选择语句: switch语句
switch语句的用途: 当一个变量被分类讨论的情形
- 在switch()的圆括号中一般是一个变量名, 这个变量将被分类讨论
- case表示"情况", 它后面没有圆括号, 直接跟一个值. 程序会一次将case后面的值与switch圆括号中的值进行全等比对, 如果比对相同, 则执行这条case冒号后面的语句. default表示默认情况
- 多条case可以共用同一个语句体
- switch语句并不像if语句那样当执行了某一个分支之后会自动跳出if语句体, 我们必须主动调用break来跳出switch语句体. 如果不书写break, 则后面的所有case都将被视为匹配, 直到遇见break
案例1:
let year = Number(prompt("请输入年份"));
// 输入一个月份, 判断该月份一共有几天
// 获取数据
let Month = Number(prompt("请输入月份"));
switch (Month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
alert("这个月有31天");
break;
case 4:
case 6:
case 9:
case 11:
alert("这个月有30天");
break;
case 2:
let runnian =
(year % 100 != 0 && year % 4 == 0) ||
(year % 400 == 0 && year % 100 == 0);
// 三元表达式写法: runnian ? alert('29天') : alert('28天')
switch (
runnian // switch嵌套的应用, 两个条件的场景建议用三元运算符
) {
case true:
alert("这个月有29天");
break;
case false:
alert("这个月有28天");
break;
}
break;
default:
alert("请输入正确的月份");
}
- 三元运算符
用途: 根据某个条件是否成立, 在两个不同值中选择变量的值
let age = 24;
let type = age >= 18 ? '成年人' : '未成年人';
alert(type); // 成年人
条件表达式 ? 表达式1 : 表达式2
问号前是判断的条件, 问号后面用冒号隔开两个表达式, 当条件表达式为真时调用表达式1, 为假时调用表达式2.
-
循环语句
- for循环语句
作用: 简化程序.
for 的圆括号中有三个表达式:
- 表达式var i = 1; 表示定义一个"循环变量" i, 并赋值为1;
- 表达式i <= 10; 表示继续执行循环的条件, 只要这个条件为真, 则会一直执行;
- 表达式i++用来更新循环变量, 使循环变量的值越来越趋向终点
for (let i = 1; i <= 10; i++) {
console.log(i);
}
for循环步骤解析:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YlQ6ZqmX-1650025592531)(C:UserslcmDesktop三元表达式.png)]
- 首先会执行语句①,
- 然后判断语句②是否满足, 如果满足则进入循环体, 执行语句③, 如果不满住则退出循环
- 语句体中的语句执行完毕后, 执行语句④
- 再次判断语句②是否满足, 如果满足则进入循环体, 执行语句③, 如果不满足则退出循环
根据for循环执行机理, 必须要会准确遍历for循环
练习1:
for (let i =2; i < 12; i += 3) {
i += 4;
console.log(i) //输出结果: 6
} // 13
练习2:
for (var i = 1; i < 10; i++) {}
console.log(i); // 输出在循环体外, 打印结果为10
练习3:
for (var i = 10; i < 4; i++) {
console.log(i); // 没有输出结果, 原因是i在第二步就没有满足条件,在循环体内不做输出
}
练习4:
// 使用for循环语句在控制台逐行输出18, 14, 10, 6, 2, -2, -6
for (let i = 18; i >= -6; i -= 4) {
console.log(i);
}
练习5:
// 使用for循环语句在控制台逐行输出0, 0.2, 0.4, 0.6, 0.8, 1
for (let i = 0; i <= 1; i += 0.2) {
console.log(Number(i.toFixed(1))); //.toFixed() 方法 把浮点数值转化为保留自定义长度的字符串类型的小数.括号数字表示保留多少位小数
}
- for循环算法题
案例1: 计算1~100所有数的和
// for循环算法题
// 创建累加器sum, 初始值是0
// 遍历1到100的值, 每遍历一个数字要把这个数字加到sum中去
for (var sum = 0, i = 1; i <= 100; i++) {
sum += i;
}
console.log(sum);
案例2: 1~100中哪个数字除以3余1, 除以4余2, 除以5余3? 运用穷举法
// 穷举法
// 请问1~100中哪个数字除以3余1, 除以4余2, 除以5余3?
for (i = 1; i <= 100; i++) {
if (i % 3 == 1 && i % 4 == 2 && i % 5 == 3) {
console.log(i);
}
/*
三元表达式写法
let n = i % 3 == 1 && i % 4 == 2 && i % 5 == 3;
n ? console.log(i) : "";
*/
}
- while循环语句
while语句也是一种循环结构, 是一种"不定范围"循环, 和for循环各有不同的用武之地
几乎所有变成语言, 都同时提供for循环和while循环
while语句事先不指定循环开始, 结束的范围, 只要测试条件满足, 就一直执行循环体
while循环没有显示定义循环变量, 必须自己在while循环外先定义好循环变量, 有时甚至可以没有循环 变量
循环体内的语句, 必须睡循环测试条件趋于不成立, 否则会死循环
案例1:
// 输出1,2,3,4....100
var i = 1;
while(i<100){
i++;
console.log(i)
}
案例2:
// 累加1-100的和
let sum = 0;
let i = 1;
while (i <= 100) {
sum += i;
i++;
}
console.log(sum);
案例3:
// 寻找满足n的平方大于456789的最小整数
// 穷举法, 从1开始
let n = 1;
while (n * n <= 456789) {
n++;
}
console.log(n);
// 小兔子拔萝卜, 第一天拔1个, 第二天拔2个, 第三天拔3个, 以次类推, 请问小兔子多少天能500个萝卜拔完?
let d = 1,
sum = 0;
while (sum < 500) {
sum += d;
d++;
}
// 这里有一个"出一错误"
console.log(d - 1);
-
- break和continue
break案例
let n = 1; while (true) { if (n * n > 456789) { console.log(n); break; } n++; }
continue案例
// contiinue 跳过当前迭代, 进入下一个循环 for (let i = 0; i < 5; i++) { if (i == 2 || i == 3) { //表示跳过2和3 continue; } console.log(i); //输出结果是0, 1, 4 }
- do while 语句
案例1
// do while 循环是后判断的循环形式, 能至少执行一次循环体 do { console.log("★"); } while (false); // 输出1, 2, 3.....100 let n = 1; do { console.log(n); n++; } while (n <= 100);
案例2
得到[a, b]区间的整数, 注b>a
公式:
parseInt(Math.random()*(b-a+1)) + a
// 随机生成两个变量dx和dy, 它们均在[-4, 4]取件随机取值, 但要求dx和dy不能同时为0 do { var dx = parseInt(Math.random() * 9) - 4; var dy = parseInt(Math.random() * 9) - 4; } while (dx == 0 && dy == 0); // 只要出循环, 就保证dx和dy不都是0 console.log(dx, dy);
- while语法算法题
猜数字案例, 猜到正确数字退出循环
// 随机一个数字, 2~99之间 let answer = parseInt(Math.random() * 98) + 2; let min = 1, max = 100; // 不断重复执行, 需要使用死循环 while (true) { // 询问用户猜测的数字 let n = Number(prompt("请猜测数字" + min + "~" + max)); // 判断用户输入的数字和answer的关系 if (n > answer) { alert("你输入的数字太大了"); max = n; } else if (n < answer) { alert("你输入的数字太小了"); min = n; } else { alert("猜对了!"); break; } } console.log(dx, dy);
-
初识算法
-
什么是算法
-
累加器和类乘器
// 由用户输入数字n, 计算3/2 +4/3 + 5/4 + ...... +(n+1)/n的结果 // 用户输入输在n let n = Number(prompt("请输入数字n")); // 累加器 let sum = 0; // 遍历分母就可以了, 因为分子就是i分母就是 for (let i = 2; i <= n; i++) { sum += (i + 1) / i; } alert(sum.toFixed(2));
// 计算阶乘 // 请用户输入数字n let n = Number(prompt("请输入数字")); // 类乘器, 一定注意, 累乘器要从1开始, 因为如果从0开始, 0乘以任何数都为0 let result = 1; // 倒着遍历, 计算阶乘 for (var i = n; i >= 1; i--) { result *= i; } alert(result);
- 穷举法
// 穷举法 // 寻找1~100当中的既能被3整除, 也能被5整除的数字 for (let i = 1; i <= 100; i++) { if (i % 3 == 0 && i % 5 == 0) { console.log(i); } }
// 寻找约数 // 让用户输入数字n let n = Number(prompt("请输入数字")); // 穷举法 for (let i = 1; i <= n; i++) { if (n % i == 0) { console.log(i); } }
// 寻找水仙花数 for (let i = 100; i < 1000; i++) { // 水仙花数要拆数位 // a, b, c分别表示百位, 十位, 个位 let i_str = i.toString(); let a = i_str.charAt(0); let b = i_str.charAt(1); let c = i_str.charAt(2); if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == i) { console.log(i); } }
- 综合算法题目
// 循环嵌套 for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { console.log(i, j); } }
-
// 寻找100以内的质数
// 穷举法
outer: for (let i = 2; i <= 100; i++) {
// 内层循环开始从2开始尝试除i, 如果能够整除, 说明它不是质数, 就可以筛选下一个数字了
for (let j = 2; j < i; j++) {
if (i % j == 0) {
continue outer; // 给外层循环命名, 并调用
}
}
console.log(i);
}
最后
以上就是专一雨为你收集整理的JavaScript-流程控制语句(笔记)的全部内容,希望文章能够帮你解决JavaScript-流程控制语句(笔记)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复