17-流程控制语句

流程控制语句

流程控制:分支(条件)、循环

1.分支语句

1.1 if 语句

只有当指定条件为true时,语句才会执行代码

if (condition)
{
    当条件为 true 时执行的代码
}
1.2 if…else 语句

在条件为true时执行代码,条件为false时执行其他代码。

if (condition)
{
    当条件为 true 时执行的代码
}
else
{
    当条件不为 true 时执行的代码
}
1.3 if…else if…else 语句
if (condition1)
{
		statement1
    当条件 1true 时执行的代码
}
else if (condition2)
{
		statement2
    当条件 2true 时执行的代码
}
else
{
		statement3
  	当条件 1 和 条件 2 都不为 true 时执行的代码
}

案例:

function exchange(num) {
  if (num && typeof num == 'number') {
    //typeof num=='number' && 0<num and num<=10
    if (num > 0 && num <= 10) {
      if (num == 1) {
        result = "壹";
      } else if (num == 2) {
        result = "贰";
      } else if (num == 3) {
        result = "叁";
      } else if (num == 4) {
        result = "肆";
      } else if (num == 5) {
        result = "伍";
      } else if (num == 6) {
        result = "陆";
      } else if (num == 7) {
        result = "柒";
      } else if (num == 8) {
        result = "捌";
      } else if (num == 9) {
        result = "玖";
      } else {
        result = "拾";
      }
    } else if(num > 10) {
      result = "请输入不大于10的数字";
    } else{
      result = "请输入不小于0的数字";
    }
  } else if (num == 0) {
    result = "零";
  } else {
    result = "请输入数字";
  }
  console.log(result);
}
exchange(0);
exchange(-120);
exchange(100);
exchange('as');
exchange();
1.4 switch 语句

用于基于不同的条件来执行不同的动作

switch(n)
{
    case 1:
        执行代码块 1
        break;
    case 2:
        执行代码块 2
        break;
    default:case 1case 2 不同时执行的代码
}

案例:

var d=new Date().getDay(); 
switch (d) 
{ 
  case 0:
    console.log('周日');
  break; 
  case 1:
    console.log('周一');
  break; 
  case 2:
    console.log('周二'); 
  break; 
  case 3:
    console.log('周三'); 
  break; 
  case 4:
    console.log('周四'); 
  break; 
  case 5:
    console.log('周五');
  break; 
  case 6:
    console.log('周六'); 
  break; 
}
1.5 default 关键词
var d = new Date().getDay();
switch (d) {
  case 4:
    console.log('周四');
    break;
  case 5:
    console.log('周五');
    break;
  default:
    console.log('期待周末');
}

注意:

  • case代码块中break不能省略
  • default可以放到代码任意位置,break不能省略,最后位置可以省略break;
  • 变量与常量对比使用”===“
  • 做等值比较的分支控制建议使用switch,非等值的判断建议使用If

2.循环语句

2.1 For循环
for (*语句 1*; *语句 2*; *语句 3*)
{
  *被执行的代码块*
}
for (var i=0; i<5; i++)
{
    console.log(i);
}
    

//1-100偶数和
var result = 0;
for(var i = 0;i < 101; i++){
    if(i % 2 == 0){
        result = result + i;
    }
}
console.log(result);
    
    
// 冒泡排序
//1、比较相邻的两个元素,如果前一个比后一个大,则交换位置。
//2、比较完第一轮的时候,最后一个元素是最大的元素。
//3、这时候最后一个元素是最大的,所以最后一个元素就不需要参与比较大小。
function bubbleSort(arr) {
  var len = arr.length;
  //外层控制循环多少趟
  for (var i = 0; i < len-1; i++) {
    //内层控制每一趟的循环次数
    for (var j = 0; j < len - 1 - i; j++) {
         // 相邻元素两两对比,元素交换,大的元素交换到后面
        if (arr[j] > arr[j + 1]) {
            var temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
        }
    }
  }
  return arr;
}
//举个数组
var arr = [20,18,27,19,35];
//使用函数
bubbleSort(arr)
2.2 关键字

立即跳出循环

for(var i=0;;i++){
  console.log(i);
  if(i==5){
    break;
  }
}
2.3 for…in…

用于遍历数组或者对象的属性

格式:

for(自定义变量名(数组的元素索引/对象的属性) in 数组/对象){

​ 执行代码

}

//循环数组
var arr=[10,'aa',20,30,40];
for(var i=0;i<arr.length;i++){
  console.log(i+"--"+arr[i]);
}
for(var key in arr){
  console.log(key+"--"+arr[key]);
}
//循环对象属性:
var obj = {
  name:"briup",
  age:12,
  salary:10000
};
/*
两种方式访问属性:
objectName.propertyName
或者
objectName["propertyName"]
*/
console.log(obj.name);
console.log(obj["age"]);
console.log(obj.salary);
for(var key in obj){
  console.log(key+"--"+obj[key]);
}
2.4 while循环
while (*条件*)
{
  *需要执行的代码*
}
while (i<5)
{
    console.log(i);
    i++;
}

//求1-100的和
var res = 0;
var i = 1;
while(i<101){
    res = res + 1;
    i++;
}
console.log(res);
2.5 do/while 循环
do
{
    需要执行的代码
}
while (条件);

//求1-100和
var res = 0;
var i = 1;
do{
    res = res + 1;
    i++;
}while(i < 101);
console.log(res)
2.6 递归
// 递归 通俗理解
// 函数自己调用自己 停不下来
// 需要有 跳出的条件
/*
    使用递归 求n的阶乘
    假设 写好了一个函数 factorial
    1 => 1
    2 => 1*2 ->factorial(1)*2
    3 => 1*2*3 ->factorial(2)*3
    4 => 1*2*3*4 ->factorial(3)*4
    ...
    n => 1*2*3...*n ->factorial(n-1)*n
*/
function factorial(n) {
  // 跳出条件
  if (n == 1) {
    return 1;
  }
  return factorial(n - 1) * n;
}
var result = factorial(4);
console.log(result);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值