JavaScript day3

131 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第2天,点击查看活动详情

JavaScript 基础第三天笔记

for 语句

掌握 for 循环语句,让程序具备重复执行能力

for 是 JavaScript 提供的另一种循环控制的话句,它和 while 只是语法上存在差异。

for语句的基本使用

  1. 实现循环的 3 要素:起始值,终止条件,变化量
 for(起始值; 终止条件; 变化量) {
      // 要重复执行的代码
 }
<script>
  // 【示例:在网页中输入标题标签】
  // 起始值为 1  变化量 i++  终止条件 i <= 6
  for(let i = 1; i <= 6; i++) {
    document.write(`<h${i}>循环控制,即重复执行<h${i}>`)
  }
</script>
  1. 变化量和死循环,for 循环和 while 一样,如果不合理设置增量和终止条件,便会产生死循环。
  2. 跳出和终止循环
<script>
//【1. continue】
    for (let i = 1; i <= 5; i++) {
        if (i === 3) {
            continue  // 结束本次循环,继续下一次循环
        }
        console.log(i)
    }
//【2. break】
    for (let i = 1; i <= 5; i++) {
        if (i === 3) {
            break  // 退出结束整个循环
        }
        console.log(i)
    }
</script>

结论:

  • JavaScript 提供了多种语句来实现循环控制,但无论使用哪种语句都离不开循环的3个特征,即起始值、变化量、终止条件,做为初学者应着重体会这3个特征,不必过多纠结三种语句的区别。
  • 起始值、变化量、终止条件,由开发者根据逻辑需要进行设计,规避死循环的发生。
  • 当如果明确了循环的次数的时候推荐使用for循环,当不明确循环的次数的时候推荐使用while循环

注意:for 的语法结构更简洁,故 for 循环的使用频次会更多。

循环嵌套

利用循环的知识来对比一个简单的天文知识,我们知道地球在自转的同时也在围绕太阳公转,如果把自转和公转都看成是循环的话,就相当于是循环中又嵌套了另一个循环。

universe.gif

实际上 JavaScript 中任何一种循环语句都支持循环的嵌套,如下代码所示:

for(外部声明记录循环次数的变量;循环条件;变化值){
    for(内部声明记录循环次数的变量;循环条件;变化值){
           //循环体 
    }
}

例子: 假如每天记住5个单词,3天后一共能记住多少单词? 拆解:

第一天 : 5个单词 第二天: 5个单词 第三天: 5个单词

// 1. 外面的循环 记录第n天 
for (let i = 1; i < 4; i++) {
    document.write(`第${i}天 <br>`)
    // 2. 里层的循环记录 几个单词
    for (let j = 1; j < 6; j++) {
        document.write(`记住第${j}个单词<br>`)
    }
}

记住,外层循环循环一次里层循环循环全部

倒三角

image.png
 // 外层打印几行
for (let i = 1; i <= 5; i++) {
    // 里层打印几个星星
    for (let j = 1; j <= i; j++) {
        document.write('★')
    }
    document.write('<br>')
}

例子:九九乘法表

1647918734677.png

样式css

span {
    display: inline-block;
    width100px;
    padding5px 10px;
    border1px solid pink;
    margin2px;
    border-radius5px;
    box-shadow2px 2px 2px rgba(255192203, .4);
    background-colorrgba(255192203, .1);
    text-align: center;
    color: hotpink;
}

javascript

 // 外层打印几行
for (let i = 1; i <= 9; i++) {
    // 里层打印几个星星
    for (let j = 1; j <= i; j++) {
        // 只需要吧 ★ 换成  1 x 1 = 1   
        document.write(`
  <div> ${j} x ${i} = ${j * i} </div>
     `)
    }
    document.write('<br>')
}

数组

知道什么是数组及其应用的场景,掌握数组声明及访问的语法。

数组是什么?

数组: (Array)是一种可以按顺序保存数据的数据类型

使用场景:如果有多个数据可以用数组保存起来,然后放到一个变量中,管理非常方便

数组的基本使用

定义数组和数组单元

<script>
  // 1. 语法,使用 [] 来定义一个空数组
  // 定义一个空数组,然后赋值给变量 classes
  // let classes = [];

  // 2. 定义非空数组
  let classes = ['小明''小刚''小红''小丽''小米']
</script>

通过 [] 定义数组,数据中可以存放真正的数据,如小明、小刚、小红等这些都是数组中的数据,我们这些数据称为数组单元,数组单元之间使用英文逗号分隔。

访问数组和数组索引

使用数组存放数据并不是最终目的,关键是能够随时的访问到数组中的数据(单元)。其实 JavaScript 为数组中的每一个数据单元都编了号,通过数据单元在数组中的编号便可以轻松访问到数组中的数据单元了。

我们将数据单元在数组中的编号称为索引值,也有人称其为下标。

索引值实际是按着数据单元在数组中的位置依次排列的,注意是从0 开始的,如下图所示:

array.jpg

观察上图可以数据单元【小明】对应的索引值为【0】,数据单元【小红】对应的索引值为【2】

<script>
  let classes = ['小明''小刚''小红''小丽''小米']
  
  // 1. 访问数组,语法格式为:变量名[索引值]
  document.write(classes[0]) // 结果为:小明
  document.write(classes[1]) // 结果为:小刚
  document.write(classes[4]) // 结果为:小米
  
  // 2. 通过索引值还可以为数组单重新赋值
  document.write(classes[3]) // 结果为:小丽
  // 重新为索引值为 3 的单元赋值
  classes[3] = '小小丽'
  document.wirte(classes[3]); // 结果为: 小小丽
</script>

数据单元值类型

数组做为数据的集合,它的单元值可以是任意数据类型

<script>
  // a) 数组单元值的类型为【字符类型】
  let list = ['HTML''CSS''JavaScript']
  // b) 数组单元值的类型为【数值类型】
  let scores = [7884706275]
  // c) 混合多种类型
  let mixin = [true1false'hello']
</script>

数组长度属性

重申一次,数组在 JavaScript 中并不是新的数据类型,它属于对象类型

<script>
  // 定义一个数组
  let arr = ['html''css''javascript']
  // 数组对应着一个 length 属性,它的含义是获取数组的长度
  console.log(arr.length// 3
</script>

操作数组

数组做为对象数据类型,不但有 length 属性可以使用,还提供了许多方法:

  1. push 动态向数组的尾部添加一个单元
  2. unshit 动态向数组头部添加一个单元
  3. pop 删除最后一个单元
  4. shift 删除第一个单元
  5. splice 动态删除任意单元

使用以上4个方法时,都是直接在原数组上进行操作,即成功调任何一个方法,原数组都跟着发生相应的改变。并且在添加或删除单元时 length 并不会发生错乱。

<script>
  // 定义一个数组
  let arr = ['html''css''javascript']

  // 1. push 动态向数组的尾部添加一个单元
  arr.push('Nodejs')
  console.log(arr)
  arr.push('Vue')

  // 2. unshit 动态向数组头部添加一个单元
  arr.unshift('VS Code')
  console.log(arr)

  // 3. splice 动态删除任意单元
  arr.splice(21// 从索引值为2的位置开始删除1个单元
  console.log(arr)

  // 4. pop 删除最后一个单元
  arr.pop()
  console.log(arr)

  // 5. shift 删除第一个单元
  arr.shift()
  console.log(arr)
</script>

案例:根据数据生成柱形图

需求: 用户输入四个季度的数据,可以生成柱形图 分析: ①:需要输入4次,所以可以把4个数据放到一个数组里面 1.利用循环,弹出4次框,同时存到数组里面 2.遍历改数组,根据数据生成4个柱形图,渲染打印到页面中 3.柱形图就是div盒子,设置宽度固定,高度是用户输入的数据 4.div里面包含显示的数字和 第n季度

<script>
    // 1. 四次弹框效果,声明一个新的数组
    let arr = []
    for(let i=1 ; i<=4 ; i++){
        /* let num = prompt(`请输入第${i}季度的数据`)
        arr.push(num) */
        arr.push(prompt(`请输入第${i}季度的数据`))
    }
    // 2,盒子开头
    document.write(`<div class="box">`)
    // 3,盒子中间 利用循环的形式  跟数组有关系
        for(let i=0 ; i<arr.length ; i++){
            document.write(`
                <div style="height: ${arr[i]}px;">
                <span>${arr[i]}</span>
                <h4>第${i+1}季度</h4>
                </div>
            `)
        }
    document.write(`</div>`)
</script>