前端基础之JavaScript学习——函数的使用

大家好我是来自CSDN的前端寄术区博主PleaSure乐事,今天我们继续有关JavaScript的学习,使用的编译器为vscode,浏览器为谷歌浏览器。


函数的声明与使用

声明

在JavaScript当中函数的声明和其他语言类似,使用如下格式即可声明:function 函数名(){函数体},具体例子如下:

<script>function bubbleSort(arr) {  let n = arr.length;  for (let i = 0; i < n - 1; i++) {  for (let j = 0; j < n - i - 1; j++) {  if (arr[j] > arr[j + 1]) {let temp = arr[j];  arr[j] = arr[j + 1];  arr[j + 1] = temp;  }  }  }  return arr;  }
</script>

使用

我们声明完函数,就需要对他进行调用,调用方法与Java等类似,使用函数名+要传入的参数就可以。但是需要注意,如果没有需要传入的参数,如下面的函数,就需要加上括号才会被调用:

<script>function test() {console.log('test');}test();
</script>

函数命名规范

函数的命名规范与变量命名规则基本一致,使用驼峰命名法。在声明中,前缀尽量使用动词方便判断作用,比如:

  1. can判断是否可以执行
  2. has判断是否含有某个值
  3. is判断是否是某个值
  4. get获取某个值
  5. set设置某个值
  6. load加载一些数据

函数的传参

基本概念

函数的参数传入可以分为单个和多个,多个数据之间需要用逗号隔开,且参数需要在声明函数时就声明,写在函数名后的括号内。传参的格式如下:

<script>let a = 1;let b = 2;//没有参数function test() {console.log('test');}test();//一个参数function test1(a) {console.log(a * a);}test1(a);//多个参数function test2(a, b) {console.log(a * b);}test2(a, b);
</script>

可以「设定函数的默认值」防止未对函数传参的情况,比如可以对参数设置默认值都为0的条件,若传入参数则用传入的参数,如果没有传入则使用默认值,即存在「优先级问题」 注意传入数组时可以设置空数组防止报错。

<script>function test(a = 0, b = 0) {console.log(a * b);}test();test(1,2);
</script>

在JavaScript当中,我们也需要注意形参和实参的区别。

形参与实参

定义

在函数定义时列出的参数称为形式参数。它们是函数内部用于接收传入数据的变量。形参只在函数体内部有效,在函数被调用时创建,并在函数执行完毕后被销毁。形参用于在函数内部存储传递给函数的数据,使函数能够对这些数据进行处理。

在函数调用时传递给函数的参数称为实际参数。它们是函数调用时提供的具体值或变量。实参可以是全局变量、局部变量或表达式的值,其作用域和存在时间由它们在函数调用之外的定义决定,在函数调用之前就已经存在,并在函数调用过程中被传递给函数。函数调用结束后,实参仍然存在。

区别

简单来讲,形参与实参的主要区别就是他们的创建时间与作用域不同,且在函数调用时实参的值会被传给形参。在如下例子当中,a和b就是形参,3和4就是实参:

<script>function sum(a, b) {  return a + b;  }var result = sum(3, 4);   console.log(result);
</script>

函数的返回值

调用某个函数会返回一个值,直接return + 数据即可返回数据,但是需要接收相关数据才行。但是需要注意的是return语句后面的代码不会被执行,需要有返回值的函数可以没有return,但是这样的话会默认返回undefined。如下就是一个需要有返回值但是没有return函数,导致出现undefined的例子:

<script>function sum(a, b) {  a += b }var result = sum(3, 4);   console.log(result);
</script>

作用域

函数的使用需要注意作用域,即局部变量和全局变量的使用,for循环,while循环等也一样。在函数内部如果未声明变量,那么该变量也当作全局变量来看,但是这种情况一般是不被允许的。

函数内部的形参可以当作局部变量来看,变量的访问原则:在能够访问到的情况下就一定先局部再全局 只要是符合规范的代码,变量就一定有作用域。

匿名函数

匿名函数是没有名字的函数,无法直接使用。

使用方法

函数表达式

该方法是将匿名函数赋值给一个变量,并通过改变量名进行调用。例如:

<script>let fn = function(){}
</script>

立即执行函数

立即执行函数的使用场景是避免全局变量之间的污染/相互影响。其语法如下:

方法一

(function(){函数体})(); 需要添加逗号否则可能会被误认为函数没结束 这里面也可以传入参数。样例如下:

<script>(function(x,y){doucment.write(x+y)})(1,2);
</script>

方法二

(function(){函数体}()); 同样可以传入参数。样例如下:

<script>(function(x,y){console.log(x-y)}(1,2));
</script>


总结

今天主要写了有关函数的有关知识点,并且写了一种比较快速便利的函数——匿名函数。希望对大家有所帮助,如果对您有帮助,希望您可以留下点赞与关注,这对我真的很重要,非常感谢!也希望我能与您共同进步!

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

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

相关文章

实战篇(十):使用Processing创建可爱花朵:实现随机位置、大小和颜色的花朵

使用Processing创建可爱花朵 0.效果预览1. 引言2. 设置Processing环境3. 创建花朵类4. 实现花瓣绘制5. 绘制可爱的笑脸6. 鼠标点击生成花朵7. 完整代码8. 总结与扩展0.效果预览 在本教程中,我们将使用Processing编程语言来创建一个可爱的花朵生成器。通过封装花朵为一个类,并…

大语言模型-检索测评指标

1. MRR &#xff08;Mean Reciprocal Rank&#xff09;平均倒数排名&#xff1a; 衡量检索结果排序质量的指标。 计算方式&#xff1a; 对于每个查询&#xff0c;计算被正确检索的文档的最高排名的倒数的平均值&#xff0c;再对所有查询的平均值取均值。 意义&#xff1a; 衡量…

【STM32】按键控制LED光敏传感器控制蜂鸣器(江科大)

一、按键控制LED LED.c #include "stm32f10x.h" // Device header/*** 函 数&#xff1a;LED初始化* 参 数&#xff1a;无* 返 回 值&#xff1a;无*/ void LED_Init(void) {/*开启时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENAB…

199.二叉树的右视图(DFS)

给定一个二叉树的根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3: 输入: [] 输出: [] 解题…

贪心算法总结(1)

一、贪心算法简介 常用方法&#xff1a;交换论证法、数学归纳法、反证法、分类讨论 二、柠檬水找零&#xff08;交换论证法&#xff09; . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool lemonadeChange(vector<int>& bills) {int five0,t…

【考研数学】线代满分经验分享+备考复盘

我一战二战复习都听了李永乐的线代课&#xff0c;二战的时候只听了一遍强化&#xff0c;个人感觉没有很乱&#xff0c;永乐大帝的课逻辑还是很清晰的。 以下是我听向量这一章后根据听课内容和讲义例题总结的部分思维导图&#xff0c;永乐大帝讲课的时候也会特意点到线代前后联…

TK秘籍:深度剖析机房IP与住宅IP的利与弊

大家好&#xff0c;今天我们来聊聊TikTok运营中的一个重要环节——IP地址的选择。 想象一下&#xff0c;你在TikTok上发布视频&#xff0c;就像是在一个热闹的市集上摆摊&#xff0c;而IP地址就是你的摊位位置。选对了位置&#xff0c;你的摊位就能吸引更多顾客&#xff0c;也…

最小二乘求待定位点的位置(三维环境)|MATLAB

前言 之前发过三点法求待测点位置的程序讲解&#xff0c;哪个是二维的&#xff0c;见&#xff1a;基于伪逆的三点法距离求位置&#xff0c;MATLAB源代码&#xff08;MATLAB函数&#xff09; 这里给出三维情况下的函数和测试代码。对于函数&#xff0c;输入已知锚点的位置、待…

JavaEE:Spring Web简单小项目实践三(留言板实现)

学习目的&#xff1a; 1、理解前后端交互过程 2、学习接口传参&#xff0c;数据返回以及页面展示 目录 1、准备工作 2、约定前后端交互接口 1、获取全部留言 2、发表新留言 3、实现服务器端代码 4、调整前端页面代码 5、运行测试 1、准备工作 创建SpringBoot项目&#x…

Linux 服务器管理和维护

Linux 是一个非常严谨的操作系统&#xff0c;每个目录都有自己的作用&#xff0c;这些作用是固定的&#xff0c;没有特殊情况&#xff0c;应严格执行&#xff1b; Linux 中所有东西以文件形式存储和管理&#xff0c;命令也不例外&#xff1b; 以下四个 bin 是二进制文件&…

SVM 技能测试:25 个 MCQ 用于测试数据科学家的 SVM

SVM 技能测试:25 个 MCQ 用于测试数据科学家的 SVM(2024 年更新) 一、介绍 你可以把机器学习算法想象成一个装满斧头、剑和刀片的军械库。你有各种各样的工具,但你应该学会在正确的时间使用它们。打个比方,将“线性回归或逻辑回归”视为一把能够有效地切片和切块数据但…

LeetCode 739, 82, 106

文章目录 739. 每日温度题目链接标签思路代码 82. 删除排序链表中的重复元素 II题目链接标签思路代码 106. 从中序与后序遍历序列构造二叉树题目链接标签思路二叉树的三种遍历值与索引的映射对于后序遍历的使用对于中序遍历的使用 代码 739. 每日温度 题目链接 739. 每日温度…

jenkins 插件版本冲突

一、Jenkins安装git parameter 插件重启后报错与临时解决方案 cd /root/.jenkins cp config.xml config.xml.bak vim config.xml <authorizationStrategy class"hudson.security.FullControlOnceLoggedInAuthorizationStrategy"><denyAnonymousReadAcces…

【工具使用】EMACS的verilog_mode脚本

#工作记录# 俗话说不会玩连连看的工程师不是一个好的SoC工程师。 在做集成工作的时候&#xff0c;集成连线估计是一件比较繁琐且容易出错的事情&#xff0c;连线类型定义出错、位宽问题、连线众多等等问题&#xff0c;此时使用由Veripool带来的verilog_mode简直是令人神清气爽…

基于牛顿-拉夫逊优化算法(Newton-Raphson-based optimizer, NBRO)的无人机三维路径规划

牛顿-拉夫逊优化算法(Newton-Raphson-based optimizer, NBRO)是一种新型的元启发式算法&#xff08;智能优化算法&#xff09;&#xff0c;该成果由Sowmya等人于2024年2月发表在中科院2区Top SCI期刊《Engineering Applications of Artificial Intelligence》上。 1、算法原理…

制造运营管理系统(MOM系统),企业实现先进制造的关键一步

随着全球制造业的快速发展&#xff0c;企业对于生产效率和成本控制的要求日益增高。在这个背景下&#xff0c;制造运营管理系统&#xff08;MOM系统&#xff09;成为了企业提升竞争力的关键工具。盘古信息作为业内领先的智能制造解决方案提供商&#xff0c;其MOM系统更是以其卓…

首批通过 | 百度通过中国信通院H5端人脸识别安全能力评估工作

2024年5月&#xff0c;中国信息通信研究院人工智能研究所依托中国人工智能产业发展联盟安全治理委员会&#xff08;AIIA&#xff09;、“可信人脸应用守护计划”及多家企业代表共同开展《H5端人脸识别线上身份认证安全能力要求及评估方法》的编制工作&#xff0c;并基于该方法开…

COD论文笔记 Deep Gradient Learning for Efficient Camouflaged 2022

动机 这篇论文的动机在于解决伪装目标检测(COD)中的一个关键问题&#xff1a;在复杂背景下&#xff0c;伪装目标与背景的边界模糊&#xff0c;使得检测变得极其困难。现有的方法&#xff0c;如基于边界或不确定性的模型&#xff0c;通常仅响应于伪装目标的稀疏边缘&#xff0c…

如何定位Milvus性能瓶颈并优化

假设您拥有一台强大的计算机系统或一个应用&#xff0c;用于快速执行各种任务。但是&#xff0c;系统中有一个组件的速度跟不上其他部分&#xff0c;这个性能不佳的组件拉低了系统的整体性能&#xff0c;成为了整个系统的瓶颈。在软件领域中&#xff0c;瓶颈是指整个路径中吞吐…

价格战再起:OpenAI 发布更便宜、更智能的 GPT-4o Mini 模型|TodayAI

OpenAI 今日推出了一款名为 GPT-4o Mini 的新模型&#xff0c;这款模型较轻便且成本更低&#xff0c;旨在为开发者提供一个经济实惠的选择。与完整版模型相比&#xff0c;GPT-4o mini 在成本效益方面表现卓越&#xff0c;价格仅为每百万输入 tokens 15 美分和每百万输出 tokens…