javaScript:对函数的认识与应用

目录

一.前言

二.函数介绍 

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 = 0function 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  timmerlet num = 10timmer = setInterval(function(){num--$('#time').innerHTML = numif (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 = 10let n =20return m+n  //breakconsole.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

示例

//没有返回值,返回的是undefinedfunction 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.rhkb.cn/news/99525.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Leetcode】108. 将有序数组转换为二叉搜索树

一、题目 1、题目描述 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 示例1: 输入:nums = [-10,-3,0,5,9] 输出:[0,-3,9,-1…

java学习——二叉树

二叉树的种类&#xff1a; 满二叉树&#xff1a;如果一棵二叉树只有度为0的结点和度为2的结点&#xff0c;并且度为0的结点在同一层上&#xff0c;则这棵二叉树为满二叉树。 完全二叉树&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层…

spring源码分析bean的生命周期(下)

doGetBean()执行过程 createBean()执行过程 一、DependsOn注解 spring创建对象之前会判断类上是否加了DependsOn注解&#xff0c;加了会遍历然后会添加到一个map中&#xff0c;spring会先创建DependsOn注解指定的类 二、spring类加载器 在合并BeanDefinition&#xff0c;确定…

时序数据库influxdb笔记

官方资料 https://docs.influxdata.com/influxdb/v2.7/install/?tLinux https://www.influxdata.com/influxdb/ 安装 1、linux平台下 1&#xff09;下载 2&#xff09;解压 3&#xff09;添加账户&#xff08; adduser influx&#xff09; 4&#xff09;设置目录权限 5…

操作符详解(1)

1. 操作符分类&#xff1a; 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员 2. 算术操作符 - * / % 1. 除了 % 操作符之外&#xff0c;其他的几个操作符可以作用于整数和浮点数。 2. 对…

技术文档如何在线搭建网页形式,方便编辑与管理分享其他人员?

搭建在线技术文档网页形式的平台可以方便编辑、管理和分享给其他人员&#xff0c;促进团队的协作和知识共享。 搭建在线技术文档网页形式的步骤和具体操作的详细介绍&#xff1a; 1. 选择适合的平台 首先&#xff0c;需要选择适合搭建在线技术文档网页形式的平台。市面上有很…

深入完整的带你了解java对象的比较

目录 元素的比较 1.基本类型的比较 2.对象比较的问题 1.运行结果 2.疑问 3.原因 对象的比较 1.覆写基类的equals 2.基于Comparble接口类的比较 3.基于比较器比较 4.三种方式对比 元素的比较 1.基本类型的比较 在Java 中&#xff0c;基本类型的对象可以直接比较大…

dockerfile的概念

目录 一.Dockerfile 概念 1.1 docker镜像的分层 二.Docker镜像的创建 2.1基于已有的镜像创建 2.2基于本地模板创建 2.3基于dockerfile创建 2.3.1dockerfile 结构(四部分) 三.Dockerfile操作指令 3.1ENTRYPOINT指令 3.2CMD 与entrypoint 四.ADD和copy区别 五.镜像分层的原…

Docker运行Nacos容器,过一会就报错`UnsatisfiedDependencyException`

Docker运行Nacos容器&#xff0c;过一会就报错UnsatisfiedDependencyException 问题背景&#xff1a; 最近要上线一个项目&#xff0c;由于要使用Nacos作为服务注册中心&#xff0c;为了方便&#xff0c;我就打算直接使用Docker部署Nacos&#xff0c;没想到Nacos启动没一会就嗝…

spring cloud 之 dubbo nacos整合

整体思路&#xff1a; 搭建本地nacos服务&#xff0c;详见docker安装nacos_xgjj68163的博客-CSDN博客 共三个工程&#xff0c;生产者服务、消费者服务、生产者和消费者共同依赖的接口工程&#xff08;打成jar&#xff0c;供生产者和消费者依赖&#xff09;&#xff1b; …

javaScript:常用的js字符串方法

目录 一.前言 二.字符串方法 1.charAt(num) 获取字符串指定位置上的字符 解释 示例 注意 2.length属性 获取字符串长度 解释 示例讲解 3.substring()字符串的截取 解释 特点 示例 4.slice()字符串截取 解释 特点 示例 应用 单行文本加省略号 字符串劫…

7-5 螺旋方阵

分数 20 全屏浏览题目 切换布局 作者 C课程组 单位 浙江大学 所谓“螺旋方阵”&#xff0c;是指对任意给定的N&#xff0c;将1到NN的数字从左上角第1个格子开始&#xff0c;按顺时针螺旋方向顺序填入NN的方阵里。本题要求构造这样的螺旋方阵。 输入格式&#xff1a; 输入在…

STM32 CubeMX (第一步Freertos任务管理:创建、删除、挂起、恢复)

STM32 CubeMX Freertos STM32 CubeMX &#xff08;Freertos任务&#xff1a;创建、删除、挂起、恢复&#xff09; STM32 CubeMX Freertos前言一、STM32 CubeMX 配置时钟树配置HAL时基选择TIM1&#xff08;不要选择滴答定时器&#xff1b;滴答定时器留给OS系统做时基&#xff09…

css学习1

1、样式定义如何显示元素。 2、样式通常保存至外部的css文件中。 3、样式可以使内容与表现分离。 4、css主要有两部分组成&#xff1a;选择器与一条或多条声明。 选择器通常为要改变的html元素&#xff0c;每条声明由一个属性和一个值组成。每个属性有一个值&#xff0c;属性…

网络通信原理UDP协议(第五十课)

UDP协议:用户数据包协议,无连接、不可靠,效率高 字段长度描述Source Port2字节标识哪个应用程序发送(发送进程)。Destination Port2字节标识哪个应用程序接收(接收进程)。Length2字节UDP首部加上UDP数据的字节数,最小为8。Checksum2字节覆盖UDP首部和UDP数据,是可…

[Docker] Windows 下基于WSL2 安装

Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。 1. 开启虚拟化 进入系统BIOS&#xff08;AMD 为 SVM&#xff1b;Intel 为 Intel-vt&#xff09;改为启用(enable) 2. 开启WSL 系统设置->应用->程序和功能->…

浅拷贝与深拷贝

作者简介&#xff1a; zoro-1&#xff0c;目前大一&#xff0c;正在学习Java&#xff0c;数据结构等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; 浅拷贝与深拷贝 浅拷贝浅拷贝定义浅拷贝代码演示浅…

《Linux运维总结:Centos7.6之OpenSSH7.4p1升级版本至9.4p1》

Centos通过yum升级OpenSSH 在官方支持更新的CentOS版本&#xff0c;如果出现漏洞&#xff0c;都会通过更新版本来修复漏洞。这时候直接使用yum update就可以升级版本。 yum -y update openssh 但是&#xff0c;CentOS更新需要有一段时间&#xff0c;不能在漏洞刚出来的时候就有…

最长公共子序列——力扣1143

解法:动态规划 int longestCommonSubsequence(string text1, string text2){int m=text1.size(), n=text2.size

【微服务】一文了解 Nacos

一文了解 Nacos Nacos 在阿里巴巴起源于 2008 2008 2008 年五彩石项目&#xff08;完成微服务拆分和业务中台建设&#xff09;&#xff0c;成长于十年双十一的洪峰考验&#xff0c;沉淀了简单易用、稳定可靠、性能卓越的核心竞争力。 随着云计算兴起&#xff0c; 2018 2018 20…