前端基础之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; 衡量…

Context使用

Context API 是 React 提供的一种用于跨组件层级共享数据的方法&#xff0c;它可以用来实现兄弟组件之间的通信。通常情况下&#xff0c;兄弟组件之间的通信需要通过它们的共同父组件来实现&#xff0c;而 Context API 则可以帮助我们避免将数据逐层传递到每一个中间组件。 实…

京准:GPS北斗卫星授时信号安全隔离防护装置

京准&#xff1a;GPS北斗卫星授时信号安全隔离防护装置 京准&#xff1a;GPS北斗卫星授时信号安全隔离防护装置 1、主要特点 ★信号加固功能&#xff1a; GPS/BDS单系统信号拒止情况下&#xff08;包含受到GPS L1欺骗干扰、GPS L1压制干扰、BDS B1欺骗干扰、BDS B1压制干扰&…

【C++】类和对象(下):初始化列表、类型转换、友元

目录 一.初始化列表 二.类型转换 三.static成员 四.友元 五.内部类 六.匿名对象 一.初始化列表 之前在实现构造函数的时候&#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…

C语言习题~day32

请问该程序的输出是多少&#xff08;&#xff09; #include<stdio.h> int main(){ unsigned char i 7; int j 0; for(;i > 0;i - 3){ j; } printf("%d\n", j); return 0; }A.2 B.死循环 C.173 D.172 无符号字符型的取值范围是 0 到 255。 第一次循环…

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

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

Flutter 中的基本数据类型:num、int 和 double

在 Dart 编程语言中&#xff0c;数值类型的基础是 num&#xff0c;而 int 和 double 则是 num 的子类型。在开发 Flutter 应用时&#xff0c;理解这三者的区别和使用场景是非常重要的。本文将详细介绍 num、int 和 double 的定义及其使用区别。 num num 是 Dart 中的数值类型…

实战:springboot用LocalDateTime快速替换Date

概叙 实战&#xff1a;早点用JDK8中的java.time来替换java.util.Date-CSDN博客 在Spring Boot项目中大家从Date升级到LocalDateTime最关心以下两个问题&#xff1a; 使用LocalDateTime类型字段作为接口出入参数&#xff0c;能正常映射转换前端传入的参数吗&#xff1f;返回参…

贪心算法总结(1)

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

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

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

TDengine 3.3.2.0 发布:新增 UDT 及 Oracle、SQL Server 数据接入

经过数月的开发和完善&#xff0c;TDengine 3.3.2.0 版本终于问世了。这一版本中既有针对开源社区的功能优化&#xff0c;也有从企业级用户需求出发做出的功能调整。在开源版本中&#xff0c;我们增强了系统的灵活性和兼容性&#xff1b;而在企业级版本中&#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 年更新) 一、介绍 你可以把机器学习算法想象成一个装满斧头、剑和刀片的军械库。你有各种各样的工具,但你应该学会在正确的时间使用它们。打个比方,将“线性回归或逻辑回归”视为一把能够有效地切片和切块数据但…

鸿蒙仓颉语言【泛型generic】

泛型 泛型特性&#xff1a; 在给定的代码中&#xff0c;泛型被用于定义参数的类型。举例来说&#xff0c;Array和Array<(Event, (Event)->Event)>中的Array都是泛型类型&#xff0c;它们可以接受不同类型的参数。 与Java的泛型相比&#xff1a; Java也有泛型特性&am…

LeetCode 739, 82, 106

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