javaScript:对函数的认识与应用

news2024/11/15 21:46:43

目录

一.前言

二.函数介绍 

A.函数的分类

 1.自定义函数

示例 

 2.匿名函数

声明匿名函数

 计时器也是匿名函数

3.立即执行函数 

解释

 示例

B.函数的返回值 

没有参数,没有返回值的函数

示例

没有参数,有返回值的函数

示例

有参数,有返回值 

示例

返回多个值

示例

 没有返回值,返回的是undefined

示例

三.函数封装练习

1.封装一个[m,n]的随机数

2.判断一个数字是不是偶数

3.生成一个随机颜色

4.求任意一个数值中的最大数

方法1

方法2

5.封装一个获取元素的函数可以传入id,类名,元素名,根据转入不同的内容,返回不同的元素


一.前言

       函数是一段可重复使用的代码块,它接收输入(称为参数)并执行特定的操作,然后可以返回一个结果。函数可以帮助我们将复杂的问题分解成更小的、可管理的部分,并提供了代码重用的机制。

      以下是一些关于函数的认识与应用的要点:

  1. 封装和抽象:函数可以封装一段逻辑,将其作为一个独立的单元进行抽象。这样可以隐藏内部的实现细节,只需要关注函数的输入和输出。通过函数封装和抽象,我们可以提高代码的可读性、可维护性和重用性。

  2. 代码重用:通过将一段代码封装到函数中,可以在程序的不同部分多次调用它,避免重复编写相同的代码。这样可以节省时间和精力,并且使代码更加简洁和可维护。

  3. 参数和返回值:函数可以接收参数,用于传递需要处理的数据或配置选项。参数允许我们通过不同的输入调用函数,实现通用的逻辑。函数还可以返回一个值作为结果,在调用函数后,可以使用返回的值进行后续操作。

  4. 模块化编程:函数可以在模块化编程中扮演重要的角色。通过将相关的功能分组为函数,并将这些函数放置在不同的模块中,可以提高代码的可维护性和可扩展性。模块化编程使得不同的功能单元可以独立开发、测试和维护,同时也有助于团队协作。

  5. 递归:函数可以调用自身,形成递归结构。递归在解决需要重复处理相同操作的问题时非常有用,例如树或图的遍历,阶乘计算等。使用递归,可以简化复杂的问题,并提供更简洁、优雅的解决方案。

  6. 回调和高阶函数:在 JavaScript 中,函数也可以作为参数传递给其他函数,或者作为返回值返回。这种函数作为值传递的能力使得回调函数和高阶函数的应用成为可能。回调函数允许在异步操作完成后执行特定的操作,而高阶函数可以接受函数作为参数或返回函数作为结果。

        函数是编程中的基本构建块之一,它们提供了一种结构化的方式来组织和处理代码。合理地使用函数可以提高代码的可读性、可维护性和复用性,并促进软件开发中的模块化和抽象思维。无论是编写小型脚本还是开发大型应用程序,函数都是至关重要的工具。

二.函数介绍 

A.函数的分类

 函数可以根据自身特点进行分类

    1.具名函数:具有名字的函数

    2.匿名函数:没有名字的函数

 1.自定义函数

  函数名:函数名区分大小写,函数的命名规则和遍历的命名规则相同

  声明函数的语法  

  function 函数名(参数1,参数2...){

             函数中的操作代码

             return 返回值

}

  函数在定义的时候,所有的参数都是形参  

  函数调用的时候,所有的参数都是实参  

示例 

let n = 0
     function show(){   
          n++
          console.log('龙游浅水遭虾戏,虎落平阳被狗欺'+n);
     }
    
   //有参数的函数
    function sum(m,n){
        console.log(m+n);
    }
   sum(5,6)
   sum('葡萄美酒','夜光杯')

另一种写法

 <button onclick="show()">执行show方法</button>

 2.匿名函数

声明匿名函数

 //声明匿名函数
    let show = function(){
        console.log('大美松江')
    }
 // //调用匿名函数
    show();

 计时器也是匿名函数


    //计时器也是匿名函数
    let  timmer
    let num = 10
    timmer = setInterval(function(){
        num--
        $('#time').innerHTML = num
        if (num<=0) {
            clearInterval(timmer)
        }
    },1000);
    

3.立即执行函数 

解释

         立即执行函数,使用的是匿名函数的原理。作用是使函数立即执行,并且创建一个单独的作用域,函数外面的变量不能污染函数内部变量,即是函数内部的变量不受外部影响,常用来开发插件

 示例

 (function () {
       console.log('玉玲珑')
   }) ();

   (function (str) {
    console.log('季莹莹'+str);
   })('玉玲珑');

   
    let n = 10;
   (function(){     //在这个区域中变量不受外部影响
      n =2;             //没有声明变量的关键字,他就是一个全局变量  
   })();
   console.log(n);

 

B.函数的返回值 

函数的返回值

    return  关键字用来返回一个值

    1.返回值可以说任意类型

    2.写在return下面的代码,不会被执行

    3.如果一个函数没有return则默认返回值是 undefined

    4.如果想要返回多个值,则可以通过返回数组或者对象的形式返回数据

没有参数,没有返回值的函数

示例

function abc(){
           console.log('画虎画皮难画骨');
           wp.style = `
                 width:200px;
                 height:200px;
                 background:#04be02;

           `   //在wp生产一个盒子

     }
     abc()

没有参数,有返回值的函数

示例

 //没有参数,有返回值
     function run(){
        let m = 10
        let n =20
        return m+n  //break
        console.log('你永远看不见我');
     }

有参数,有返回值 

示例

//有参数,有返回值
     function anyFun(m,n,c){
        return [m,n,c] // 返回一个数组
     }
     let arr = anyFun('程咬金','程咬银','程咬铁')
     console.log(arr);

返回多个值

示例


      //返回多个值
      function anyReturn(){
        let user = '魏忠贤'
        let arr = ['李莲英','郑和','王振','赵高']
        let num = 9000;
        return[user,arr,num]
      }
      console.log(anyReturn());

 没有返回值,返回的是undefined

示例


      //没有返回值,返回的是undefined
      function noReturn(){
        console.log('加油奥利给');
        return false  
      }
      let str = noReturn()
      console.log(str);   //返回flsae 如果不写 return false 则返回undefined

三.函数封装练习

1.封装一个[m,n]的随机数

//封装一个[m,n]的随机数
     function sj(m,n){
        return Math.floor(Math.random()*(n-m+1)+m)
     }
      let n1 = sj(20,30)
      console.log(n1);

2.判断一个数字是不是偶数

function o(x){
        if (x%2==0) {
            alert(`${x}是偶数`)
        } else {
            alert(`${x}是奇数`)
        }
    }

3.生成一个随机颜色

//2.生成一个随机颜色
    function col(){
        let r = Math.floor(Math.random()*256)
        let g = Math.floor(Math.random()*256)
        let b = Math.floor(Math.random()*256)
        let cols = `rgb(${r},${g},${b})`
        return cols
    }

4.求任意一个数值中的最大数

方法1

//3.求任意一个数值中的最大数
    function arrmax(m){  //m是数组
      let n = m.sort(function(a,b){
            return b-a
          })
      let max = n[0]
          return max
    }
    console.log(arrmax([1,2,3]));

方法2


    function maxArr(arr){
        return Math.max.apply(null,arr)
    }

5.封装一个获取元素的函数可以传入id,类名,元素名,根据转入不同的内容,返回不同的元素

 //(工具型函数)
    //封装一个获取元素的函数可以传入id,类名,元素名,根据转入不同的内容,返回不同的元素
    // 传入id可以 以#开头 #wp
    //传入类名可以以点开头  .abc
    //传入 标签名 直接写标签名即可
    function $(ele){
        //如果传入的选择器不合法
        if (ele == ''||ele==undefined||typeof ele == "number"||typeof ele == "object") {
            return ;
        }

       //获取传入选择器的首字符
       let first = ele.charAt()
       if (first=='#') {
        /*getElementById 方法的参数不需要#号,因此需要把#去掉*/
        return  document.getElementById(ele.slice(1))
       }else if (first=='.') {
        return  document.getElementsByClassName(ele.slice(1))
       }else{
        return document.getElementsByTagName(ele)
       }
    }

    // $('#wp')   //id=wp的元素
    // $('.abc')
    // $('li')  //获取所有li标签
    // $() //

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/909229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Transformer在医学影像中的应用综述-分割

文章目录 Transformers in Medical Imaging: A Survey摘要方法手工的方法基于卷积的方法基于Transformer的方法影像分割2D3D 多器官分割纯transformer混合Transformer单规模结构transformer在编码器中Transformer在编码器和解码器之间Transformer在编码器和解码器中Transformer…

【React】生命周期和钩子函数

概念 组件从被创建到挂载到页面中运行&#xff0c;再到组件不用时卸载的过程。 只有类组件才有生命周期。 分为三个阶段&#xff1a; 挂载阶段更新阶段销毁阶段 三个阶段 挂载阶段 钩子函数 - constructor 创建阶段触发 作用&#xff1a;创建数据 之前定义状态是简写&…

Datawhale Django 后端开发入门 Task05 DefaultRouter、自定义函数

一、DefaultRouter是Django REST framework中提供的一个路由器类&#xff0c;用于自动生成URL路由。路由器是将URL与视图函数或视图集关联起来的一种机制。Django REST framework的路由器通过简单的配置可以自动生成标准的URL路由&#xff0c;从而减少了手动编写URL路由的工作量…

五种消息模型简单说明

五种消息模型简单说明 RabbitMQ提供了6种消息模型&#xff0c;但是第6种其实是RPC&#xff0c;并不是MQ&#xff0c;因此不予学习。那么也就剩下5种。但是其实3、4、5这三种都属于订阅模型&#xff0c;只不过进行路由的方式不同。  我们通过一个demo工程来了解下RabbitMQ的…

代码随想录算法训练营(23/6/25)LeetCode 84.柱状图中最大的矩形

LeetCode 84.柱状图中最大的矩形 今天是算法训练营的打卡的最后一天&#xff0c;我开始觉得我能坚持下来&#xff0c;但因为个人原因&#xff0c;还有期末考试我花太多心思&#xff0c;打卡就一直断断续续&#xff0c;博客没怎么写&#xff0c;最终也写完了

ctfshow-web10 with rollup 绕过

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 基本方法&#xff0c;到处点一点&#xff0c;点到取消的时候&#xff0c;突然发现&#xff0c;可以下载一个文件&#xff1a; 看到这个源码&#xff0c;可以看到只能是通过满足下面的条件来拿到flag&#xff…

sql server 快速安装

目录标题 一、下载二、直接选择基本安装二、下载ssms&#xff08;数据库图形化操作页面&#xff09;三、开启sa账号认证&#xff08;一&#xff09;第一步&#xff1a;更改身份验证模式&#xff08;二&#xff09;第二步&#xff1a;启用 sa 登录 一、下载 下载地址&#xff1…

ModaHub魔搭社区:AI Agent在操作系统场景下的AgentBench基准测试

近日,来自清华大学、俄亥俄州立大学和加州大学伯克利分校的研究者设计了一个测试工具——AgentBench,用于评估LLM在多维度开放式生成环境中的推理能力和决策能力。研究者对25个LLM进行了全面评估,包括基于API的商业模型和开源模型。 他们发现,顶级商业LLM在复杂环境中表现出…

【leetcode 力扣刷题】链表基础知识 基础操作

链表基础知识 基础操作 链表基础操作链表基础知识插入节点删除节点查找节点 707. 设计链表实现&#xff1a;单向链表&#xff1a;实现&#xff1a;双向链表 链表基础操作 链表基础知识 在数据结构的学习过程中&#xff0c;我们知道线性表【一种数据组织、在内存中存储的形式】…

基于原生Servlet使用模板引擎Thymeleaf访问界面

我们常在Spring Boot项目中使用Thymeleaf模板引擎,今天突发奇想&#xff0c;尝试原生Servlet访问&#xff01; 说做就做 搭建完整的WEB项目 其中的大部分依赖都是后续报错 追加进来的 导入依赖 thymeleaf-3.0.11.RELEASE.jar 第一次访问 访问地址: http://localhost:8080…

利用屏幕水印学习英语单词,无打扰英语单词学习

1、利用屏幕水印学习英语单词&#xff0c;不影响任何鼠标键盘操作&#xff0c;不影响工作 2、利用系统热键快速隐藏&#xff08;ALT1键 隐藏与显示&#xff09; 3、日积月累单词会有进步 4、软件下载地址: 免安装&#xff0c;代码未加密&#xff0c;安全的屏幕水印学习英语…

Linux学习之ftp安装、vsftpd安装和使用

ftp需要两个端口&#xff1a; 数据端口 命令端口 ftp有两种模式&#xff1a; 被动模式&#xff1a;建立命令连接之后&#xff0c;服务器等待客户端发起请求。 主动模式&#xff1a;建立命令连接之后&#xff0c;服务器主动向客户端发起数据连接&#xff0c;因为客户端可能有防火…

6-2 使用函数求素数和

分数 20 全屏浏览题目 切换布局 作者 张高燕 单位 浙大城市学院 本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。 素数就是只能被1和自身整除的正整数。注意&#xff1a;1不是素数&#xff0c;2是素数。 函数接口定义&#xff1a; int p…

相关变化率的例子

如图&#xff0c;不解释。 很多物理学上的物理量&#xff0c;直接使用微分和导数来定义&#xff0c;因此可以不加证明的直接使用这些物理量。 解&#xff1a; d l 2 , d w 3 dl 2, dw 3 dl2,dw3 v l 2 w 2 , d v − 2 l d l 2 w d w 2 l 2 w 2 − 2 12 2 2 5…

内网渗透神器CobaltStrike之内网信息收集(九)

收集域内信息 Windows命令 查看网关的ip地址, DNS的ip地址、域名等等&#xff1a;shell ipconfig /all 查看当前主机所在的域: shell net view /domain 查看当前域的主机列表: shell net view 查看指定域的主机列表: shell net view /domain:[domain] 若beacon用户是域控, 则…

数据同步工具比较:选择适合您业务需求的解决方案

在当今数字化时代&#xff0c;数据已经成为企业的核心资产。然而&#xff0c;随着业务的扩展和设备的增多&#xff0c;如何实现数据的高效管理和同步成为了一个亟待解决的问题。本文将介绍几种常见的数据同步工具&#xff0c;并对比它们的功能、性能和适用场景&#xff0c;帮助…

二、9.硬盘驱动程序

文件系统是运行在操作系统中的软件模块&#xff0c;是操作系统提供的一套管理磁盘文件读写的方法和数据组织、存储形式&#xff0c;因此&#xff0c;文件系统&#xff1d;数据结构&#xff0b;算法&#xff0c;哈哈&#xff0c;所以它是程序。它的管理对象是文件&#xff0c;管…

互斥锁的概念,与部分接口

何为互斥 一种对共享数据的保护&#xff0c;防止多线程同时访问共享资源的时&#xff0c;数据混乱的问题。在互斥期间&#xff0c;保证执行流由并行改为串行。任何时刻&#xff0c;互斥保证有且只有一个执行流进入临界区&#xff0c;访问临界资源&#xff0c;通常对临界资源起…

苍穹外卖 day2 反向代理和负载均衡配置的代码

为什么要整这些玩意 为了并发&#xff0c;为了容错&#xff0c;为了高可用 一 反向代理的代码 server{listen 80;server_name localhost;location /api/{proxy_pass http://localhost:8080/admin/; #反向代理} }**proxy_pass&#xff1a;**该指令是用来设置代理服务器的地址&…