JS-流程控制语句

前言#

  1. 调试代码,找出代码中的问题经常使用 debugger 来打断点, 而要能在准确位置打上断点, 就必须熟悉程序的执行流程
  2. 流程控制语句有三种: 顺序结构, 分支结构和循环结构

(一) 顺序结构(默认)#

  1. 程序默认从上到下一句一句代码执行, 这就是顺序结构
  2. 若是某一行代码出现了错误, 则后面的代码无法执行
<script>
var a = 1;
console.log('a=',a);
var b = 2;
console.log('b=',b);
var c = 3;
console.log('c=',d);
var d = 4;
console.log('d=',d);
</script>

(二) 分支结构#

1. if else#

<script>
    // 需求: 根据学生成绩来评等级
    // 60分以下 不及格
    // 60-80(不包含) 及格
    // 80(包含) 以上优秀

    // 分数
    var score = 70;

    if (score < 60) {
        document.write('该学生成绩不及格');
    } else if (score < 80) {
        document.write('该学生成绩及格');
    } else {
        document.write('该学生成绩优秀')
    }

    if (score > 80) {
        console.log('优秀')
    } else if (score >= 60) {
        console.log('及格');
    } else {
        console.log('不及格');
    }
</script>
需求1: 根据一个人年龄进行分段
1. 在页面输出这个人所属阶段
2. 具体规则如下
未成年人:0至17岁;
青年人: 18岁至65岁;
中年人: 66岁至79岁;
老年人: 80岁至99岁;

2. 三目运算符#

var isLogin = false;
var text = '';
if(isLogin) {
  text = '13800000000';
} else {
  text = '立即登录';
}

// 更简洁的表达方式
var text = isLogin?'13800000000':'立即登录';
console.log(text);

var str = prompt('请输入性别');
var gender === '1':'男人':'女人';
console.log('性别是:',gender);

3. switch#

<script>
    // 选择城市
    var cityName = prompt('请输入城市简写');

    switch (cityName) {
        case 'sz':
            console.log('切换到深圳市');
            break
        case 'gz':
            console.log('切换到广州市');
            break
        case 'bj':
            console.log('切换到北京市');
            break;
        case 'sh':
            console.log('切换到上海市');
            break;
        default:
            console.log('这个城市暂时没有数据');

    }
</script>

练习:

  1. 月和日小于 10 则在其前面添加 0 变为两位数

    var month = 5;
    var day = 4
    //
    
  2. 麦当楼的饮料机有四个按钮, 按钮 1 得到橙汁,按钮 2 得到牛奶, 按钮 3 得到啤酒, 按钮 4 得到咖啡,

请编写一个程序, 弹出一个窗口, 用户输入的的数字不同, 弹出不同的饮料.

(三) 循环结构#

01 标准 for 循环部分#

(1)循环变量初始值 (2)循环条件 (3)改变循环条件 (4)循环体

循环规律:

  • 第一轮 先执行第一部分, 再执行第二部分, 然后执行第三部分, 最后执行第四部分, 简称 1243

  • 第二轮开始 先执行第二部分(第一部不再执行), 然后执行第三部分, 最后执行第四部分,直到结束, 简称 243

    // demo1
    // 第1轮 i=0,条件满足,运行循环体
    // 第2轮 i=1,条件满足,运行循环体
    // 第3轮 i=2,条件满足,运行循环体
    // 第4轮 i=3,条件不满足,终止循环
    // 所以循环体被执行了三次,结果为0,1,2
    for (var i=0;i<3;i++) {
    	console.log(i);
    }
    

02 应用#

1.应用 demo#

// 应用1:计算总和
var sum = 0;
for (var i=0;i<3;i++) {
	console.log(i);
  // sum = sum + i;
  sum += i;
}
console.log(sum);

// 应用2: 拼接字符串,输出到网页上
<script>
    var str = '';
     for (var i=0;i<5;i++) {
        str += 'a';
     }
     document.write(str); // 屏幕显示5个a
</script>

2. 练习:#

  1. 练习 1: 计算 1~100 的和并输出到页面上

  2. 练习 2: 使用 for 循环在网页上打印一个 ul 列表,列表有 5 个 li,li 的内容任意

    进阶: 给 li 内容添加序号(从 1 开始);

    <script>
        var str = '';
         for (var i=0;i<5;i++) {
            str += '<li>I have a dream</li>';
         }
         document.write('<ul>')
    
         document.write(str);
         document.write('</ul>')
    </script>
    
    <script>
        var str = '';
         for (var i=0;i<5;i++) {
            str += `<li>${i+1}. I have a dream</li>`;
         }
         document.write('<ul>')
         document.write(str);
         document.write('</ul>')
    </script>
    

    2. continue 和 break#

<script>
  	// continue继续
    for (var i = 0; i < 10; i++) {

        if (i === 5) {
            continue;
        }
        // continue之后的代码不再执行直接进入下一轮循环,所以当i===5时,i不打印
        console.log(i);
    }
</script>

<script>
  	// break 中断
    for (var i = 0; i < 10; i++) {

        if (i === 5) {
            break;
        }
        // break后, 本层循环终止
        console.log(i);
    }
</script>

3. 死循环#

  1. 循环的四个部分并不是必须的

    <script>
        var i = 0
      	// for循环缺少初始部分
        for (; i < 10; i++) {
            console.log(i);
        }
    </script>
    
    <script>
        var i = 0
      	// 缺少两部分
        for (;i < 10;) {
            console.log(i);
            i++
        }
    </script>
    
    <script>
        var i = 0
      	// 三部分都没有,其实四部分都没有也是可以的, 只是没有意义
        for (;;) {
            console.log(i);
            if(i>5) {
                break;
            }
            i++
        }
    </script>
    
  2. 死循环就是循环条件永远满足条件导致循环用不终止, 直到关闭浏览器

    <script>
        var i = 10;
        for (;i>5;) {
            console.log(22222);
        }
    </script>
    
    <script>
        for (;;) {
            console.log(22222);
        }
    </script>
    

4.while 和 do while#


5. 数组遍历和对象遍历(进阶应用)#

for 循坏进阶应用

  1. 将数组成员(成员为基本数据类型)输出到页面上
<script>
    var list = ['香蕉', '苹果', '雪梨', '火龙果'];
    for (var i = 0; i < list.length; i++) {
        // 循环体执行的次数等于数组的长度
        console.log(list[i]); // 会一次打印出数组的每一个成员
    }

    // 将成员放入li内在输出到页面上
    var str = '';
    for (var i = 0; i < list.length; i++) {
        str += `<li>${list[i]}</li>`;
    }
    document.write('<ul>')
    document.write(str)
    document.write('</ul>')
</script>
  1. 将数组成员(成员为引用类型)输出到页面上
<script>
    // 将数组成员的姓名和年龄输出到页面上, 一个成员一个li
    var list = [
        {username: '张三1', age: 18},
        {username: '张三2', age: 19},
        {username: '张三3', age: 20},
        {username: '张三4', age: 21},
        {username: '张三5', age: 22},
    ]
    var str = '';
    for(var i=0;i<list.length;i++) {
        console.log(list[i]);
        str += `<li>姓名: ${list[i].username} 年龄: ${list[i].age}岁</li>`
    }
    document.write('<ul>')
    document.write(str)
    document.write('</ul>')
</script>

练习: 把身边的成员数组输出到页面上

  1. 先写好 ul 和 li 的样式, 将数组成员按写好的样式输出到页面上

(四) 简单的 Dom 操作#

  1. 获取网页内的元素节点

    var app = document.getElementById('app');  // 获取id为app的元素节点, 并将节点存放在变量app内
    
  2. 给元素节点填充内容

    // 填充文本
    app.innerHtml = 'hello world';
    // 填充标签
    app.innerHtml = '<div>老胡</div>';
    // 字符串拼接变量
    var username = 'laohu';
    app.innerHtml = '<div>'+username+'</div>';  // 数据多的时候,拼接不方便
    
  3. 模板字符串, 字符串中的变量使用${变量名}代替

  4. 使用模板字符串拼接长串标签

资料 1: 课堂练习#

  1. 计算 1 至 100 累加的值

  2. 把数组的成员展示到页面上

    • 字符串拼接方式
    • 模板字符串使用
     var fruits = ['香蕉', '苹果', '雪梨', '火龙果'];
    
  3. 编程题

    要求:
    (1)收集本小组成员个人信息, 做成一个数组, 并且使用for循环把成员信息输出到网页上
    (2)成员信息包含姓名, 年龄, 性别, 籍贯, 爱好
    (3)可以设置适当的样式
    

资料 2: 作业#

  1. 渲染电影列表和影院列表

  2. 二维数组

    当数组的成员也是数组时, 我们把这个数组称为二维数组, 有以下二维数组, 计算所有所有成员总和

    var list = [
    [1,3,5],
    [2,4,6],
    [3,6,9]
    ]
     var sum = 0;
    for(var i=0;i<list.length;i++) {
     var sum2 = 0;
     for(var j=0;j<list[i].length;j++) {
         sum2 += list[i][j];
     }
     sum += sum2;
    }
    console.log(sum); 
    
    // 方式2
    var sum = 0;
    for(var i=0;i<list.length;i++) { 
     for(var j=0;j<list[i].length;j++) {
         sum += list[i][j];
     } 
    }
    console.log(sum); 
    
  3. 生成 99 乘法表

<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .num {
        margin-left: 20px;
        font-size: 16px;
        border: 1px solid greenyellow;
        background-color: greenyellow;
        display: inline-block;
        width: 20px;
        height: 20px;
        line-height: 20px;
        text-align: center;
        border-radius: 50%;
      }
      p:nth-child(odd) {
        color: red;
      }
    </style>
  </head>
  <body>
    <pre>
需求: 点击按钮生成乘法口诀表, 样式自理
    </pre
    >
    <button onclick="create()">生成</button>
    <div class="box"></div>

    <script>
      function create() {
        var all = "";
        for (var i = 1; i <= 9; i++) {
          var str = "";
          for (var j = 1; j <= i; j++) {
            str += `<span style="margin-right:5px;">${j}X${i}=${j * i}</span>`;
          }
          all += `<p>${str} <span class="num">${i}</span></p>`;
        }
        document.querySelector(".box").innerHTML = all;
      }
    </script>
  </body>
</html> 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛马小先锋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值