超越函数界限:探索JavaScript函数的无限可能

🎬 岸边的风:个人主页

 🔥 个人专栏 :《 VUE 》 《 javaScript 》

⛺️ 生活的理想,就是为了理想的生活 !


目录

📚 前言

📘 1. 函数的基本概念

📟 1.1 函数的定义和调用

📟 1.2 参数和返回值

📟 1.3 匿名函数

📘 2. 函数的高级概念

📟 2.1 作用域

📟 2.2 闭包

📟 2.3 高阶函数

📘 3. 函数的应用场景

📟 3.1 回调函数

📟 3.2 递归

📟 3.3 函数柯里化

📚  写在最后


📚 前言

 

 

JavaScript中的函数是一种重要的编程概念,它允许我们封装可重用的代码块,并在需要时进行调用。本文将深入介绍JavaScript函数的各个方面,包括函数定义和调用、参数和返回值、作用域和闭包、高阶函数以及常见的函数应用场景。 

📘 1. 函数的基本概念

JavaScript中,函数是一段封装了可执行代码的命名代码块。它允许我们将代码组织成逻辑单元,并在需要时进行调用。函数具有以下特点:

📟 1.1 函数的定义和调用

函数的定义使用 function 关键字,后跟函数名、参数列表和函数体,如下所示:

function add(a, b) { return a + b; }

函数名称是一个标识符,用于在调用函数时引用它。调用函数时,可以通过在函数名称后加上小括号,并传递参数的方式调用函数,如下所示:

var result = add(2, 3); // 调用add函数,并将结果赋值给result变量 
console.log(result); // 输出:5

📟 1.2 参数和返回值

函数可以接受零个或多个参数,并且可以返回一个值。参数是函数定义时的占位符,用于在调用函数时传递数据。返回值是函数执行完毕后返回给调用者的结果。下面是一个带有参数和返回值的函数示例:


function multiply(a, b) { return a * b; } 
var result = multiply(2, 3); 
console.log(result); // 输出:6

📟 1.3 匿名函数

除了使用函数名定义函数外,还可以使用匿名函数(没有函数名)来创建函数。匿名函数通常作为回调函数或立即执行函数使用。以下是一个匿名函数的示例:

var greet = function(name) 
{ console.log('Hello, ' + name + '!'); }; 
greet('Alice'); // 输出:Hello, Alice!

📘 2. 函数的高级概念

除了基本概念外,JavaScript函数还具有一些高级概念,包括作用域、闭包和高阶函数

📟 2.1 作用域

作用域定义了变量可访问的范围。JavaScript中有全局作用域和函数作用域。在函数内部定义的变量只能在函数内部访问,而在函数外部定义的变量则可以在整个脚本中访问。以下是一个作用域的示例:

var globalVar = 'Global Variable'; 
function foo() 
{ var localVar = 'Local Variable'; console.log(localVar); // 输出:Local Variable console.log(globalVar); // 输出:Global Variable 
} 
foo(); 
console.log(localVar); // 抛出ReferenceError异常,因为localVar不在全局作用域中

📟 2.2 闭包

 

闭包指的是函数能够访问其定义时所在的词法作用域。它使函数可以记住并访问在其外部定义的变量。以下是一个闭包的示例: 


function outer() 
{ 
var outerVar = 'Outer Variable'; 
    function inner() { console.log(outerVar); // 输出:Outer Variable 
    } 
return inner; 
} 
var closure = outer(); 
closure(); // 输出:Outer Variable

📟 2.3 高阶函数

高阶函数是以函数作为参数或返回值的函数。它们允许我们编写更灵活和可复用的代码。常见的高阶函数包括 mapfilterreduce 等。以下是一个高阶函数的示例:

function multiplyBy(factor) { 
return function(number) { 
return number * factor; }; 
} 
var double = multiplyBy(2); 
var triple = multiplyBy(3); 
console.log(double(4)); // 输出:8 
console.log(triple(4)); // 输出:12

📘 3. 函数的应用场景

JavaScript函数在各种应用场景中发挥着重要作用。以下是几个常见的应用场景:

📟 3.1 回调函数

 

回调函数是作为参数传递给其他函数,并在特定事件发生时被调用的函数。它们常用于处理异步操作、事件处理和请求响应等场景。

function download(url, onSuccess, onError) { 
// 下载操作... 
if (downloadCompleted) { 
onSuccess(data); } 
else 
{ onError(error); 
} 
} 
function handleSuccess(data) { 
console.log('下载成功:' + data); 
} 
function handleError(error) { 
console.log('下载失败:' + error); 
} download('https://example.com/file', handleSuccess, handleError);

📟 3.2 递归

递归是一种函数调用自身的技术。它可以用于解决需要重复执行相似任务的问题,例如树遍历、阶乘计算和斐波那契数列等。

function factorial(n) { 
if (n === 0 || n === 1) { 
return 1; 
} else { 
return n * factorial(n - 1); 
} 
} 
console.log(factorial(5)); // 输出:120

📟 3.3 函数柯里化

函数柯里化是将一个接受多个参数的函数转换为一系列接受单个参数的函数的技术。它可以使函数更加灵活,便于部分应用和组合

function add(a, b) { 
return a + b; 
} 
function curry(fn) { 
return function(a) { 
return function(b) { 
return fn(a, b); 
}; 
}; } 
var curriedAdd = curry(add); 
var add2 = curriedAdd(2); 
console.log(add2(3)); // 输出:5

📚  写在最后

JavaScript函数是封装可重用代码块的重要工具。它们通过定义和调用来实现代码组织和复用。函数可以接受参数并返回值,提供了灵活性和通用性。作用域和闭包帮助保持代码的隔离性和安全性,允许函数访问封闭环境中的变量。高阶函数允许函数作为参数或返回值,增强了函数的组合和操作能力。在实践中,函数用于事件处理、异步编程、模块化开发等。JavaScript函数是开发高效、可维护代码的必备工具。

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

化繁为简,使用Hibernate Validator实现参数校验

前言 在之前的悦享校园的开发中使用了SSM框架,由于当时并没有使用参数参数校验工具,方法的入参判断使用了大量的if else语句,代码十分臃肿,因此最近在重构代码时,将框架改为SpringBoot后,引入了Hibernate V…

57从零开始学Java之一文详解String字符串的底层实现原理

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在之前的两篇文章中,壹哥给大家介绍了String字符串及其常用的API方法、常用编码、正则表达…

第一讲:BeanFactory和ApplicationContext接口

BeanFactory和ApplicationContext接口 1. 什么是BeanFactory?2. BeanFactory能做什么?3.ApplicationContext对比BeanFactory的额外功能?3.1 MessageSource3.2 ResourcePatternResolver3.3 EnvironmentCapable3.4 ApplicationEventPublisher 4.总结 1. 什么是BeanF…

GuLi商城-前端基础Vue指令-单向绑定双向绑定

什么是指令? 指令 (Directives) 是带有 v- 前缀的特殊特性。 指令特性的预期值是:单个 JavaScript 表达式。 指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于DOM 例如我们在入门案例中的 v-on,代表绑定事…

vscode + python

序 参考链接: 【教程】VScode中配置Python运行环境_哔哩哔哩_bilibili Python部分 Python Releases for Windows | Python.org vscode部分 Visual Studio Code - Code Editing. Redefined 一路next,全部勾上: 就可以了: 安装插…

盛元广通高校实验室开放预约与综合管理系统LIMS

系统概述: 高校实验室涉及到的课程、老师、学生多,管理起来费时费力,盛元广通高校实验室开放预约与综合管理系统LIMS提供简单易用的账号管理、实验室管理、课程管理、实验项目管理、实验时间设定;为学生提供简单易用的自主实验选…

设计模式篇---抽象工厂(包含优化)

文章目录 概念结构实例优化 概念 抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。 工厂方法是有一个类型的产品,也就是只有一个产品的抽象类或接口,而抽象工厂相对于工厂方法来说,是有…

ORB-SLAM2学习笔记7之System主类和多线程

文章目录 0 引言1 整体框架1.1 整体流程 2 System主类2.1 成员函数2.2 成员变量 3 多线程3.1 ORB-SLAM2中的多线程3.2 加锁 0 引言 ORB-SLAM2是一种基于特征的视觉SLAM(Simultaneous Localization and Mapping)系统,它能够从单个、双目或RBG…

8月16日上课内容 部署LVS-DR群集

本章结构: 数据包流向分析: 数据包流向分析: (1)客户端发送请求到 Director Server(负载均衡器),请求的数据报文(源 IP 是 CIP,目标 IP 是 VIP)到达内核空间。 &#xf…

追踪工时和控制成本 如何选对工具

研发工作中的工时管理软件是一种用于追踪、记录和分析团队成员在项目中所花费的工作时间的工具。它有助于组织、监控和优化研发项目的进展,确保资源得到有效利用,项目按时完成,并提供数据支持用于决策制定和资源规划。 能够记录团队成员的工…

Visual Studio 2022 你必须知道的实用调试技巧

目录 1、什么是bug? 2.调试是什么?有多重要? 2.1我们是如何写代码的? 2.2又是如何排查出现的问题的呢? ​编辑 2.3 调试是什么? 2.4调试的基本步骤 2.5Debug和Release的介绍 3.Windows环境调试介绍…

[Vue]解决npm run dev报错node:internal/modules/cjs/loader:1031 throw err;

解决: 有2中方法,建议先尝试第一种,不行再第二种 第一种: 重新安装依赖环境 删除项目的node_modules文件夹,重新执行 # 安装依赖环境 npm install# 运行 npm run dev 我只用了第一种方法就可以了 ,第二种方法从别的博主那看到…

QT中的按钮控件Buttons介绍

目录 Buttons 按钮控件 1、常用属性介绍 2、按钮介绍 2.1QPushButton 普通按钮 2.2QtoolButton 工具按钮 2.3Radio Button单选按钮 2.4CheckButton复选按钮 2.5Commam Link Button命令链接按钮 2.6Dialog Button Box命令链接按钮 Buttons 按钮控件 在Qt里,…

【JavaEE进阶】SpringMVC

文章目录 一. 简单认识SpringMVC1. 什么是SpringMVC?2. SpringMVC与MVC的关系 二. SpringMVC1. SpringMVC创建和连接2. SpringMVC的简单使用2.1 RequestMapping 注解介绍2.2 RequestMapping支持的请求类型2.3 GetMapping 和 PostMapping 3. 获取参数3.1 传递单个参数3.2 传递对…

【1-3章】Spark编程基础(Python版)

课程资源:(林子雨)Spark编程基础(Python版)_哔哩哔哩_bilibili 第1章 大数据技术概述(8节) 第三次信息化浪潮:以物联网、云计算、大数据为标志 (一)大数据 大数据时代到来的原因…

如何编写一个通用的函数?

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 金句分享:…

Java 项目日志实例:Log4j2

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ Apache Log4j 2 是对 Log4j 的升级,与其前身 Log4j 1.x 相比有了显着的改进,并提供了许多 Logback 可用的改进,同时支持 JCL 以及 SLF4J…

Git:本地仓库创建和远程绑定

创建远程仓库 登录git网站,创建一个远程仓库 创建时可以选择仓库属性,公共/私有。仓库命名之类。创建完毕后可以在网站上看到仓库所在网址。 创建本地仓库 打开一个文件夹,鼠标右键Git Bash Here,打开git的命令行 git init//…

AWS security 培训笔记

云计算的好处 Amazon S3 (Storage) Amazon EC2 (Compute) 上图aws 的几个支柱:安全是其中一个啦 其中安全有几个方面 IAMdetection基础架构保护数据保护应急响应 关于云供应商的责任 data center 原来长这样 ,据说非常之隐蔽的 如果有天退役了&#xf…

wustojc2010两小时学完C语言

#include <stdio.h> int main() {int a,b,c;scanf("%d%d%d",&a,&b,&c);printf("%d",a-b*c);return 0;}