条件语句和循环语句
文章目录
1. 条件语句
1.1 if
if(条件表达式){
//要执行的代码
}
if(条件表达式){
// 当表达式成立时要执行的代码
}
else{
// 当表达式不成立时要执行的代码
}
if (条件表达式 1) {
// 条件表达式 1 为真时执行的代码
} else if (条件表达式 2) {
// 条件表达式 2 为真时执行的代码
}
...
else if (条件表达式N) {
// 条件表达式 N 为真时执行的代码
} else {
// 所有条件表达式都为假时要执行的代码
}
//注意各个条件之间不能有交叉
if语句和&&短路语句的转换:
if(1 < 2){
document.write("a");
}
上面的if判断语句相当于一下短路语句:
1 < 2 && document.write("a");
1.2 switch case
switch(expression){
case value1:
statement1;
break;
case value2:
statement2;
break;
default:
statement3;
}
若没有break,代码会自动匹配下一个条件,且若在某个case中表达式等于其值,则执行这个case后的语句,并不做判断的执行后面所有case/default中的语句。为了避免这种后面语句不做判断而直接执行的情况发生,需要在每一个case语句的后面加上break。
switch(n){
case 'a':
console.log('a');
case 2:
console.log('b');
case 3:
console.log('c');
default:
console.log('d');
}
上述代码,四个输出语句都会执行。
如果确实需要连续匹配几个条件,那么推荐写个注释表明是故意忽略了break。
例如:
var date = window.prompt('input');
switch(date){
case "monday":
// 跳过
case "tuesday":
// 跳过
case "wednesday":
// 跳过
case "thursday":
// 跳过
case "friday":
console.log('working');
break;
case "saturday":
// 跳过
case "sunday":
console.log('relaxing');
break;
}
2. 循环语句
2.1 for
for(initialization; condition; increment) {
// 要执行的代码
}
JS for 循环中括号中的三个表达式是可以省略的,但是用于分隔三个表达式的分号不能省略。
2.2 while
while (条件表达式) {
// 要执行的代码
}
while(1){}
为死循环。
3. break&continue语句
break 语句用于立即退出循环,强制执行循环后的下一条语句。
而 continue 语句也用于立即退出循环,但会再次从循环顶部开始执行。
4. 相关练习
4.1 阶乘
输入一个整数n,打印出n的阶乘
var n = parseInt(window.prompt('input'));
var result = 1;
//第1种方法
// if(n == 0){
// result = 1;
// }else{
// for(var i = 1; i < n + 1; i ++){
// result *= i;
// }
// }
//第2种方法
for(var i = 1; i < n + 1; i ++){
result *= i;
}
document.write('The result is ' + result);
4.2 斐波那契数列
输入一个整数n,打印斐波那契数列的第n项。
// 第1种方法
// var n = parseInt(window.prompt('input'));
// var a = 1,
// b = 1,
// result;
// if(n < 3){
// result = 1;
// }else{
// for(var i = 0; i < n - 2; i ++){
// a = a + b; //令a=b,b=a+b
// b = a - b;
// a = a - b;
// b = a + b;
// }
// result = b;
// }
// document.write('the result is ' + result);
//第2种方法
// var n = parseInt(window.prompt("input"));
// var a = 1,
// b = 1,
// result;
// if(n == 1 || n == 2){
// result = 1;
// }
// for(var i = 2; i < n; i ++){
// result = a + b;
// a = b;
// b = result;
// }
// document.write(result);
//第3种方法
var n = parseInt(window.prompt("input"));
var a = 1,
b = 1,
foo;
function Fibonacci(n) {
if(n == 1 || n == 2){
return 1;
}
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
document.write(Fibonacci(n));
4.3 输出最大值
输入三个数,输出其中最大的哪个数。
var a = parseInt(window.prompt('input a: '));
var b = parseInt(window.prompt('input b: '));
var c = parseInt(window.prompt('input c: '));
if(a < b){
a = b;
}
if(a < c){
a = c;
}
document.write(a);
4.4 2的n次方
var n = parseInt(window.prompt('input'));
var result = 1;
for(var i = 0; i < n; i ++){
result *= 2;
}
document.write("The result is " + result);
4.5 输出100以内的质数
// var flag = 1;
// for(var n = 2; n < 101; n ++){
// for(var i = 2; i <= Math.sqrt(n); i ++){
// if(n % i == 0){
// flag = 0;
// break;
// }else{
// flag = 1;
// }
// }
// if(flag == 1){
// document.write(n + ' ');
// }
// }
var flag = 1;
for(var n = 2; n < 101; n ++){
for(var i = 2; i < n; i ++){
if(n % i){
flag = 1;
}else{
flag = 0;
break;
}
}
if(flag){
document.write(n + " ");
}
}
4.6 倒转3位数
var n = parseInt(window.prompt('Please enter a three-digit integer: '));
var result;
if(n >= 0 && n < 1000){
var a = n % 10;
var b = (n - a) / 10 % 10;
var c = (n - a - b * 10) / 100 % 10;
result = a * 100 + b * 10 + c;
document.write('the result is: ' + result);
}else{
document.write('error');
}