前端基础之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.rhkb.cn/news/380811.html

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

相关文章

语义分割——为什么单通道8bit灰度图像能显示多种色块???

目录 一、问题二、解答2.1 标签图的实际存储格式2.2 标签图的显示颜色2.3 颜色映射示例 三、应用颜色映射3.1 OpenCV显示标签图3.2 Matplotlib显示标签图 四、总结 一、问题 大家在做语义分割时不知道有没有这样的疑惑&#xff0c;使用打标签工具后&#xff0c;标签图是单通道…

基于Python+Django,开发的一个在线教育系统

一、项目简介 使用Python的web框架Django进行开发的一个在线教育系统&#xff01; 二、所需要的环境与组件 Python3.6 Django1.11.7 Pymysql Mysql pure_pagination DjangoUeditor captcha xadmin crispy_forms 三、安装 1. 下载项目后进入项目目录cd Online-educ…

Bubbliiiing 的 Retinaface rknn python推理分析

Bubbliiiing 的 Retinaface rknn python推理分析 项目说明 使用的是Bubbliiiing的深度学习教程-Pytorch 搭建自己的Retinaface人脸检测平台的模型&#xff0c;下面是项目的Bubbliiiing视频讲解地址以及源码地址和博客地址&#xff1b; 作者的项目讲解视频&#xff1a;https:…

【网络安全科普】勒索病毒 防护指南

勒索病毒简介 勒索病毒是一种恶意软件&#xff0c;也称为勒索软件&#xff08;Ransomware&#xff09;&#xff0c;其主要目的是在感染计算机后加密用户文件&#xff0c;并要求用户支付赎金以获取解密密钥。这种类型的恶意软件通常通过电子邮件附件、恶意链接、下载的软件或漏洞…

基于重要抽样的主动学习不平衡分类方法ALIS

这篇论文讨论了数据分布不平衡对分类器性能造成的影响,并提出了一种新的有效解决方案 - 主动学习框架ALIS。 1、数据分布不平衡会影响分类器的学习性能。现有的方法主要集中在过采样少数类或欠采样多数类,但往往只采用单一的采样技术,无法有效解决严重的类别不平衡问题。 2、论…

Fast-Retry 高性能百万级任务重试框架介绍及使用

一、Fast-Retry 在本专栏的前面文章中我们介绍了 Spring 家族的 重试框架&#xff0c;本篇文章再给大家介绍一个高性能百万级任务重试框架 Fast-Retry 。它是一个高性能任务重试框架&#xff0c;可以支持百万级别任务的并发重试处理。与 Spring-Retry 不同&#xff0c;Fast-Re…

【JavaEE进阶】——Spring事务和事务传播机制

目录 &#x1f6a9;事务 &#x1f388;为什么需要事务? &#x1f388;事务的操作 &#x1f6a9;Spring 中事务的实现 &#x1f388;数据准备 &#x1f388;Spring 编程式事务(了解) &#x1f388;Spring 声明式事务 Transactional &#x1f36d;Transactional 详解 &…

阵列信号处理学习笔记(二)--空域滤波基本原理

阵列信号 阵列信号处理学习笔记&#xff08;一&#xff09;–阵列信号处理定义 阵列信号处理学习笔记&#xff08;二&#xff09;–空域滤波基本原理 文章目录 阵列信号前言一、阵列信号模型1.1 信号的基本模型1.2 阵列的几何构型1.3 均匀直线阵的阵列信号基本模型 总结 前言…

服务攻防-框架安全(漏洞复现)

关闭靶场 sudo docker-compose down 运行此靶场 sudo docker-compose up -d 查看启动环境 sudo docker ps 运行dockers容器 docker exec -it 64052abd288b /bin/bash thinkphp框架 thinkphp 2 - rce漏洞复现 docker exec -it 731dbae0e0b5 /bin/bash 集成化工具扫描 可以命令…

初学 Linux 必知必会的 X 个知识点

文章目录 一、Linux 系统与 Windows 系统的差别二、Linux 命令行初识1. 终端界面2. 路径的含义3. 命令结构说明4. 常见的 Linux 命令4-1. 文件和目录操作4-2. 网络相关命令 5. 使用命令行时的小技巧5-1. 使用 TAB 键补全5-2. 巧用通配符 *5-3. 命令行历史功能 三、文件的详细信…

linux在ssh的时候询问,yes or no 如何关闭

解决&#xff1a; 在~/.ssh/config文件中添加如下配置项&#xff1a; Host *StrictHostKeyChecking no

深度洞见|探索与突破:大模型在中国市场的实践

1 大模型产业应用的发展趋势 // 人工智能产业进入高速发展期&#xff0c;创造多个技术、市场、监管的里程碑 自2022年ChatGPT问世后&#xff0c;生成式AI&#xff08;大模型&#xff09;进入高速发展期&#xff0c;标志着AI经济新纪元的到来。大模型技术的快速迭代不仅促进了…

python—爬虫爬取电影页面实例

下面是一个简单的爬虫实例&#xff0c;使用Python的requests库来发送HTTP请求&#xff0c;并使用lxml库来解析HTML页面内容。这个爬虫的目标是抓取一个电影网站&#xff0c;并提取每部电影的主义部分。 首先&#xff0c;确保你已经安装了requests和lxml库。如果没有安装&#x…

一、C#概述

本文是网页版《C# 12.0 本质论》第一章解读。欲完整跟踪本系列文章&#xff0c;请关注并订阅我的Essential C# 12.0解读专栏。 前言 第一章的内容非常简单&#xff0c;毕竟仅仅是Introducing C#。不过正如《0.前言》所述&#xff0c;《C# 12.0本质论》本身就不是一本零基础的…

【Python游戏】编程开发贪吃蛇游戏(第一期)

本文收录于 《一起学Python趣味编程》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、贪吃蛇游戏开发简介2.1 贪吃蛇游戏规则2.2 贪吃蛇游戏开发步骤 三、贪吃蛇游戏开发实战四、总结…

多任务高斯过程数学原理和Pytorch实现示例

高斯过程其在回归任务中的应用我们都很熟悉了&#xff0c;但是我们一般介绍的都是针对单个任务的&#xff0c;也就是单个输出。本文我们将讨论扩展到多任务gp&#xff0c;强调它们的好处和实际实现。 本文将介绍如何通过共区域化的内在模型(ICM)和共区域化的线性模型(LMC)&…

【开源库】libodb库编译及使用

前言 本文介绍windows平台下libodb库的编译及使用。 文末提供libodb-2.4.0编译好的msvc2019_64版本&#xff0c;可直接跳转自取 ODB库学习相关 【开源库学习】libodb库学习&#xff08;一&#xff09; 【开源库学习】libodb库学习&#xff08;二&#xff09; 【开源库学习】…

数据库之存储引擎

目录 一、MySQL支持的存储引擎 二、查看MySQL默认存储引擎 三、修改MySQL默认存储引擎 四、常用的存储引擎 1.InnoDB 2.MyISAM 3.MEMORY 一、MySQL支持的存储引擎 使用SHOW ENGINES \G; 命令查看 以“\G”结尾&#xff0c;其作用是将查询结果按列显示。 Engine&#xff…

人工智能与语音识别:技术进步与应用前景

引言 人工智能&#xff08;AI&#xff09;作为当今科技进步的核心驱动力&#xff0c;正在各个领域展现其变革力量。其中&#xff0c;语音识别技术作为人工智能的重要应用之一&#xff0c;已经深入到我们的日常生活和工作中。从智能助手如Siri、Google Assistant&#xff0c;到智…

Apache BookKeeper 一致性协议解析

导语 Apache Pulsar 是一个多租户、高性能的服务间消息传输解决方案&#xff0c;支持多租户、低延时、读写分离、跨地域复制&#xff08;GEO replication&#xff09;、快速扩容、灵活容错等特性。Pulsar 存储层依托于 BookKeeper 组件&#xff0c;所以本文简单探讨一下 BookK…