JS流程控制语句

## 流程控制语句
**3-1条件语句**
给定一个判断条件,并在程序执行过程中判断该条件是否成立。
*3-1-1单分支语句*
由一个if组成,如果条件成立,则进入代码块开始执行语句。
语法:

if(条件){
//条件为真时执行的代码
}
示例:

let age = 20; 
if(age >= 18){ 
console.log("你已经是成年人了"); 
}

 

如果条件不是一个布尔值,那么会被自动转换为布尔值
示例:

if(1){
console.log("Hello"); 
}

 

*3-1-2双分支语句*
就是由两个分支线,如果if条件不成立,那么就会跳入到else语句中,语法时:

if(条件){
//条件为真时要执行的代码
}else{
//条件为假时要执行的代码
}
示例:

let age = 16; 
if(age >= 18){ 
console.log("你已经是成年人了");
}else{ 
console.log("你还是未成年人");
}


**三目运算符**
if...else语句的一个缩写方式,就是使用三目运算符 ?:
语法:条件 ? (条件为真时执行的代码):(条件为假时执行的代码)

示例:

let age = 16; 
let result = age>=18 ? "你已经成年了" : "你还是未成年"; 
console.log(result);//你还是未成年

使用三目运算符找出三个数最大的那个数:
示例: let a
= 3,b = 8,c = 5; let max = a>b ? (a>c?a:c) : (b>c?b:c); console.log(max);//8

 

*3-1-3多分支语句*
多个if...else语句可以组合在一起,形成逻辑决策树,
语法:
if(条件){
//执行语句
}else if(条件){
//执行语句
}else{
//执行语句
}

**switch语句**
有一种比多分支结构更清晰的语句结构,就是switch语句。语法:
switch(条件){
case 1:
//执行语句
break;
case 2:
//执行语句
break;
case 3:
//执行语句
break;
default:
//执行语句
}
*break关键字*
break时用于跳出某个case,如果不书写break的话,进入case以后会继续进入后面的case语句。
*default关键字*
default用于书写默认的条件,如果前面的都不满足的话,就进入到default语句里面。
**3-2循环语句**
*3-2-1while循环*
whlie循环是比较常见的一种,语法为:
whlie(表达式){
//循环体
}

示例:从1加到100

let i = 1,sum = 0;
    while(i <= 100){ 
    sum += i; 
    i++; } 
console.log(sum);//5050

 

无穷循环又叫死循环
*3-2-2do...whlie循环*
首先执行一次循环体,然后检测循环条件表达式的值是否为真,是真的话,则重复执行循环语句。
**3-2-3for循环**
for循环是最常见的一种循环。
语法为:
for(表达式1;表达式2;表达式3){
//循环体
}
执行的顺序为:首先执行表达式1,然后进行表达式2的判断,如果表达式2成立,那么执行循环体,循环体执行结束后,进行表达式3,然后回头再看表达式2是否成立,成立就执行循环体,不成立就循环结束。

示例:for循环实现从1加到100

let sum = 0; 
for(let i=1;i<=100;i++){ 
sum += i; 
} 
console.log(sum);//5050
另一种方式:
let i = 1,sum = 0;
for(;i<=100;){ 
sum += i; 
i++;
} 
console.log(sum);//5050

 

*遍历数组*
使用for循环来对数组进行遍历。
示例:

let arr = [1,2,3,4,5];
for(let i=0;i<arr.length;i++){ 
console.log(arr[i]); 
}

 

在使用for循环来遍历数组的时候,使用一个变量来存储数组的长度,这样可以提升程序的小路,因为不用每次都取重新计算数组的长度。
示例:

let arr = [1,2,3,4,5]; 
for(let i=0,j=arr.length;i<j;i++){ 
console.log(arr[i]); 
}

 

**3-2-4循环的嵌套**
我们可以把一个循环放在另一个循环里面,从而构成循环的嵌套,里面的循环称之为内层循环,外面的循环称之为外层循环,外层循环一次,内层循环就是把自己的全部循环执行完。
循环嵌套示例:打印九九乘法表


let str = "";
for(let i=1;i<=9;i++){ 
for(let j=1;j<=i;j++){ 
str += i + "*" + j + "=" + (i*j) + " "; 
} 
console.log(str); 
str = ""; 
} 

 


使用双层for循环遍历一个二维数组:

let arr = [ 
["Bill",20], 
["Lucy",23], 
["David",25], 
["Lily",18] ]; 
for(let i=0;i<arr.length;i++){ 
for(let j=0;j<arr[i].length;j++){ 
console.log(arr[i][j]); 
} 
} 
// Bill 
// 20 
// Lucy 
// 23
// David 
// 25
// Lily
// 18

**3-2-5break和continue**
*break*
用于跳出switch语句或者循环语句,注意的是:break语句不能直接作用于if语句,除非if语句是被嵌套在循环语句里面的。
语法:
for(表达式1;表达式2;表达式3){
if(条件){
//执行语句
break;
}
}
*continue语句*
结束本次循环(不是终止整个循环),即跳过循环体中的continue语句后面的语句,开始下一次循环。
break语句和continue语句的区别:
continue语句的意思是结束本次循环,break语句是结束整个循环。
示例:
break语句:
for(1,2,3){
a;
b;
c;
break;//执行a,b循环结束
c;
d;
}
continue语句:
for(1,2,3){
a;
b;
continue;//执行a,b后结束本次循环
c;
d;
}

**给数组去重复**

let arr = [1, 2, 2, 2, 3, 4, 5, 5, 6, 6, 7, 8]; 
let newArr = []; 
outer: for (let i = 0; i < arr.length; i++) { 
for (let j = 0; j < newArr.length; j++) { 
if (arr[i] === newArr[j]) { 
continue outer; //终止名字为outer的循环

} 
} 
newArr.push(arr[i]);
} 
console.log(newArr);

 

 

for循环示例:

// 求100到200之间的3的所有倍数
// 10个数为一行,打印一次
let j=0;
let arr ="";
for(let a=100;a<=200;a++){
    if(a % 3 == 0){
        j++;
        arr =arr+a+" ";
    if(j%10==0){
        console.log(arr);
            arr ="";//消除已经打印出来了的,不重复打印
        }
    }
}
console.log(arr);                            

 

// 100-999以内的水仙花数,即一个数字它的每一位数的立方加起来等于这个数,如:153=1*1*1+5*5*5+3*3*3
let i;
for(i=100;i<=999;i++){

    let bai = parseInt(i / 100);
    let shi = parseInt(i / 10)%10;
    let ge = i % 10; 
        if( i == bai*bai*bai+shi*shi*shi+ge*ge*ge){
            console.log(i);
    }
}        

 

 

// 斐波那契数列
// 0,1,1,2,3,5,8,13,21....
// 用户随机输入一个位数,判断这是数列中的哪个数

let readline = require("readline-sync");
console.log("请输入数字:")
let bit;//位数
let num1 =0;//第一位数
let num2 =1;//第二位数
let temp =0;//临时变量
bit = parseInt(readline.question(""));
  for(let i=3;i<=bit;i++){
    temp = num2;
    num2 = num1 + num2;
    num1 = temp;
  }
console.log("该位数上的数为:",num2);

 

posted @ 2019-07-05 15:34  沐子李  阅读(837)  评论(0编辑  收藏  举报