JS基础-----5-----温故而知新对象

112 阅读3分钟

前言:初识JS,适当回顾,有助于理解。


求数组中的最大值

如何求一个数组中的最大值? 首先,定义一个数组。

let arr = [1,2,3,5,56,4,8,9,48,9,1,4]

求最大值:

  • 获取数组的每一个值:----遍历:for
  • 找两个值进行比较,找到更大的值:比较----if
tips ~
  • 关于数组的命名-语义化:可以是 arr相关、带s的单词(复数):items/names 本身是复数:children list
let max = arr[0]
let min = arr[0]
  • 循环遍历数组:for while do...while
  • 三要素:变量初始值、条件、变量的变化
  • 就算没有在这个位置写三要素,也要写;
for(1-变量初始值;2-条件-5;4-变量的变化-7){
    3-循环体-6
}
      for (let i = 0; i < arr.length; i++) {
        // 满足条件,说明默认max还不是最大值,它就需要被替换
        if (nums[i] > max) {
          max = arr[i];
        }
        if (nums[i] < min) {
          min = arr[i];
        }
      }
      console.log(max, min);

函数的基本定义

  • 调用函数: 函数名称():只要函数名称后面带有()就是在调用函数
  • 调用一个函数,会执行函数体内的“所有”代码

函数名称:动词 function 函数名称(){函数体} 没有传递实参,形参默认是undefined

function getMax(arr){
    if(typeof arr !='object'){
    return
    }
    for(let i = 0;i<arr.length;i++){
    if(arr[i]>max){
        max = arr[i]
        }
    if(arr[i]<min){
        min = arr[i]
        }
    }
}

关于return的细节

  • return会终止当前函数的执行,意味着return后面的代码不在执行了
  • 默认也会返回undefined,如果一个函数没有返回值,那么久默认返回undefined
  • 函数并不能决定操作结果如何处理,函数应该将处理结果返回给调用者
  • return:可以用于函数中,返回相应的数据
  • 且!!!return只能用于函数中

如何返回多个值?

  1. 如果直接以逗号分隔返回多个值,最终只能返回最后那一个值
  2. return只能返回一个变量
  3. 所以,现阶段我们可以定义一个数组,存储你想返回的数据,最终将数组返回 例如 return[max,min]

方法的形参

  • 形参:形式参数:就是一个数据的占位:告诉你这里需要一个值“如果用户不传递相应的会有可能得到错误的结果”
  • 在定义方法的时候()里面声明的变量就是形参
  • 如下代码:num1num2就是形参,说明用户调用getSum方法需要传递两个变量
  • 形参可以定义任意个
      function getSum(num1, num2) {
        console.log(num1, num2);

        let sum = num1 + num2;
        console.log(sum);
      }
  • 如果没有传递参数,形参默认是undefined
  • 调用方法传递的具体的数据,就是实参
  • 实参就是实际存在的值,这个值我们要先定义好
  • 参数传递:顺序对应:第一个实参给第一个形参 (类型对应、数量对应)
  • 调用方法的过程就是,实参为形参,赋值的过程
  • 形参相当于方法的局部变量,只有在方法体({})内可以使用
      function getSum(num1, num2) {
        let sum = num1 + num2;
        console.log(sum);
      }

      // num1 is not defined
      // console.log(num1, num2)

      getSum(100, 200);

短路运算的运用

  • 通过短路运算为参数设置默认值
  • 如果没有传递参数,参数默认值为undefined

||

  • 逻辑运算符(做判断条件使用,写在判断位置 例如if(这里)):口诀,一真则真,全假才假
  • 短路运算(做赋值使用,写在=号右边),第一个为真就第一个值,否则第二个值

&&

  • 逻辑运算符使用,做条件判断:一假则假,全真才真

  • 短路运算(做赋值使用,写在=号右边),第一个为真还要继续判断第二个值 ...

  • 在js 转换bool值为false的有: 0 ‘’ “” null undefined a = a || 0 也可以写作

if(!a){a=0} b=b ||0

  • +两边有一边是字符串,那么+就是字符串拼接符
  • 如果两边都不是字符串,+就是运算符,系统会将两边的变量转换为数值
  • undefined转换为数值,是NaN:NaN不能和任何数据进行运算(NaN)和比较(false)

短路运算的案例

||短路运算

  • let res = 10 > 20 || 100 ////true

&&短路运算

  • let res = 10 < 20 && 100 ////false

函数的作用域:

  • 在函数里面定义的变量,默认在函数外面不能使用 function test(){ //真正的全局变量,挂载到window(会产生全局污染,增加电脑的负载,少量没有关系) }

块级作用域

  • 块级作用域:块是指一个{}

  • 意思是指在{}中声明的变量,在{}外面不能使用

  • let会产生块作用域

  • 作用域:定义的变量所在的{}结构

  • 有效作用域:能够真正使用这个变量的区域:从定义这个变量开始在他所在的结构{}结束

  • let变量记住!!!!先声明!!!再赋值!!!再使用!!!

作用域链

  • 如果函数内部定义了变量,那么优先使用函数自己的。
  • 先找自身函数的变量,如果没有,则找外层(上一级)作用域,以此类推。
  • 但是函数外部不能使用函数内部的成员

匿名函数

具名函数,如下代码,函数的名称就是test function test(){} 函数名称()》》 test()

匿名函数不能单独存在,它只有三个使用方式 1.作为一个变量的值 ,值的类型是一个函数,函数表达式

      // let age = 20
      // let fn = function() {
      //   console.log(123)
      // }
      // fn(

2.作为一个自调用函数==立即执行的函数 ;(function(){console.log(123)})()

3.将匿名函数做为函数的参数--回调函数 let btn = document.querySelectorI('button') // 获取元素 为btn这个元素添加一个事件监听器,添加一个单击事件的监听,当用户真的单击这个按钮的时候,调用你所传入的处理函数 btn.addEventListener('click', function() {})

案例分享

需求-用户输入一个秒数,将秒数传递给一个函数,函数返回时分秒,我们接收返回值,在控制台打印输出正确的格式 1.接收用户输入 2.定义一个函数,有一个参数代表 秒 3.进行转换,获取 时 分 秒 4.返回多个值 5.调用函数,接收返回值,对返回值进行自定义处理

      let num = +prompt('请输入一个秒数')
      let arr = exchange(num)
      document.write(
        `${num}秒所对应的时间是:${arr[0]}${arr[1]}${arr[2]}秒`
      )

      function exchange(miao) {
        // 1.获取时
        let hour = parseInt(miao / 3600)
        // 2.获取分
        let minute = parseInt((miao % 3600) / 60)
        // 3.获取秒
        let second = miao % 60

        // 返回多个值,现在可以包装这数组
        return [hour, minute, second]
      }

今日回顾到此~------------与君共勉--------------