掌握 JavaScript 中的函数

掌握 javascript 中的函数

第 5 天:掌握 javascript 函数

日期:2024 年 12 月 12 日

欢迎来到 javascript 学习之旅的第五天!今天,我们将探讨 javascript 最基本、最强大的方面之一——函数。函数使我们能够封装逻辑、提高可重用性并有效地组织代码。读完本文后,您将深入掌握如何定义、调用和使用函数,并了解它们的作用域和闭包。

1.什么是函数?

函数是一个可重用的代码块,旨在执行特定任务。函数可以帮助您避免重复的代码,使您的程序更干净、更高效。

语法:

function functionname(parameters) {  // function body  return value; // optional}

示例:

function greet(name) {  return `hello, ${name}!`;}console.log(greet("arjun")); // output: hello, arjun!

2.定义和调用函数

函数声明

函数是使用 function 关键字声明的。

立即学习“Java免费学习笔记(深入)”;

示例:

function add(a, b) {  return a + b;}console.log(add(3, 4)); // output: 7

函数调用

调用函数会执行其代码。

示例:

function sayhello() {  console.log("hello, world!");}sayhello(); // output: hello, world!

3.函数表达式

函数表达式将函数分配给变量。这允许像任何其他变量一样对待函数。

示例:

const multiply = function (x, y) {  return x * y;};console.log(multiply(5, 6)); // output: 30

4.箭头函数

箭头函数为编写函数提供了简洁的语法。它们在回调和较短的函数定义中特别有用。

语法:

const functionname = (parameters) => {  // function body};

示例:

const divide = (a, b) => a / b;console.log(divide(10, 2)); // output: 5

如果函数只有一个参数或只有一个 return 语句,则可以省略括号和 return 关键字。

示例:

const square = x => x * x;console.log(square(4)); // output: 16

5. javascript 中的作用域

作用域 确定变量在代码中的可访问位置。

全球范围

在任何函数或块之外声明的变量都是全局作用域的。可以在脚本中的任何位置访问它。

示例:

let globalvar = "i am global";function showglobalvar() {  console.log(globalvar);}showglobalvar(); // output: i am global

本地范围

函数内声明的变量的作用域为该函数的本地范围。

示例:

function showlocalvar() {  let localvar = "i am local";  console.log(localvar);}showlocalvar(); // output: i am local// console.log(localvar); // error: localvar is not defined

块范围

使用 let 和 const,变量的作用域限于声明它们的块。

示例:

if (true) {  let blockscoped = "block scope!";  console.log(blockscoped); // output: block scope!}// console.log(blockscoped); // error: blockscoped is not defined

6.关闭

closure 是一个函数,即使在外部函数完成执行之后,它也会记住其封闭范围中的变量。

示例:

function outerfunction() {  let count = 0;  return function innerfunction() {    count++;    return count;  };}const counter = outerfunction();console.log(counter()); // output: 1console.log(counter()); // output: 2console.log(counter()); // output: 3

这里,即使在outerfunction执行之后,innerfunction也会“记住”count变量。

7.现实世界的例子

示例1:温度转换

function celsiustofahrenheit(celsius) {  return celsius * 9/5 + 32;}console.log(celsiustofahrenheit(30)); // output: 86

示例 2:使用计数器闭包

function createcounter() {  let count = 0;  return {    increment: () => ++count,    decrement: () => --count,  };}const counter = createcounter();console.log(counter.increment()); // output: 1console.log(counter.decrement()); // output: 0

示例 3:数组中的箭头函数

const numbers = [1, 2, 3, 4];const squares = numbers.map(num => num * num);console.log(squares); // Output: [1, 4, 9, 16]

8.要点

函数:封装逻辑并提高可重用性。函数类型:声明、表达式和箭头函数。作用域:了解全局、局部和块作用域,以便更好地管理变量。闭包:利用闭包实现强大、内存高效的代码结构。

第五天练习

编写一个计算数字阶乘的函数。创建一个基于闭包的计数器,它可以自行递增和重置。使用箭头函数将温度列表从摄氏度转换为华氏度。

后续步骤

在第 6 天,我们将探索 数组和对象,这是 javascript 中的两种基本数据结构。敬请期待2024年12月13日!

以上就是掌握 JavaScript 中的函数的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1499425.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
对可访问性的反对以及应对方法
上一篇 2025年12月19日 21:46:30
Hobby API 收集和执行工具如何演变成产品
下一篇 2025年12月19日 21:46:44

相关推荐

  • MyBatis 持久层框架配置与优化技巧 (全网最实用教程)

    MyBatis 持久层框架配置与优化技巧 (全网最实用教程)MyBatis 持久层框架配置与优化技巧 (全网最实用教程)MyBatis 持久层框架配置与优化技巧 (全网最实用教程)MyBatis 持久层框架配置与优化技巧 (全网最实用教程)

    mybatis配置常见坑与优化实践包括:1. mapperlocations路径配置需明确,避免jar包部署失效;2. 事务应由spring管理,确保sqlsession与事务同步;3. 日志级别开发用debug、生产用info/warn;4. 配置项遵循最小化原则,仅启用理解和需要的选项。sql编…

    2026年10月7日 • 用户投稿
    300
  • composer如何处理需要授权的私有包

    composer如何处理需要授权的私有包composer如何处理需要授权的私有包composer如何处理需要授权的私有包composer如何处理需要授权的私有包

    配置访问令牌或SSH密钥并声明私有仓库地址,是Composer安装私有包的核心。通过GitHub/GitLab的Personal Access Token或SSH密钥认证,结合composer.json中repositories的vcs类型配置,即可实现私有包拉取。 Composer 处理需要授权的…

    2026年10月7日 • 用户投稿
    200
  • Composer如何处理依赖包中包含的.env文件?

    Composer如何处理依赖包中包含的.env文件?Composer如何处理依赖包中包含的.env文件?Composer如何处理依赖包中包含的.env文件?Composer如何处理依赖包中包含的.env文件?

    Composer不加载依赖包中的.env文件,因其职责仅为管理PHP依赖,不涉及配置解析。原因包括:作用域隔离要求配置由主项目维护;安全性考虑防止敏感信息泄露;设计原则遵循不干涉运行时。第三方库通常提供.env.example作为模板,需手动复制或合并到项目根目录的.env中。如需加载包内.env,…

    2026年10月7日 • 用户投稿
    500
  • Laravel查询中orWhere逻辑的正确使用与优化

    针对Laravel查询中orWhere条件链导致返回所有数据的问题,本教程将深入解析其背后的SQL逻辑,并提供两种专业的解决方案:使用闭包(回调函数)正确分组orWhere条件,以及通过局部作用域(Local Scope)封装查询逻辑,以提高代码的可读性和可维护性,同时强调处理空搜索词的重要性。 问…

    2026年10月6日
    200
  • PHP 静态变量与静态数组:生命周期、作用域与实践指南

    PHP中的静态变量与静态数组在函数作用域内能保持其值,跨多次函数调用而不被重置;在面向对象编程中,它们属于类而非实例,无需实例化即可通过类名直接访问。理解其生命周期和作用域对于编写高效且状态可控的代码至关重要,本文将深入探讨其特性与应用。 静态变量在函数作用域中的持久性 在php中,局部变量通常在函…

    2026年10月6日
    200
  • mount 命令(三) —— Linux 挂载 Windows 共享目录

    mount 命令(三) —— Linux 挂载 Windows 共享目录mount 命令(三) —— Linux 挂载 Windows 共享目录mount 命令(三) —— Linux 挂载 Windows 共享目录mount 命令(三) —— Linux 挂载 Windows 共享目录

    要在windows系统上设置smb服务并从linux挂载windows共享目录,请按照以下步骤操作: 首先,在Windows系统上启用SMB服务: 接着,设置共享文件夹: 然后,设置共享是否需要密码: 如果遇到挂载错误,可以尝试取消密码需求(改为无密码保护的共享),看看是否可以挂载成功。改变本地策略…

    2026年10月6日 • 用户投稿
    100
  • Gmail API Java REST服务无用户干预授权指南

    Gmail API Java REST服务无用户干预授权指南Gmail API Java REST服务无用户干预授权指南Gmail API Java REST服务无用户干预授权指南Gmail API Java REST服务无用户干预授权指南

    本文详细阐述了在Java REST服务中,如何实现对Gmail API的无用户干预访问。核心方案是针对Google Workspace账户使用服务账户的域范围委派(Domain-Wide Delegation),实现对用户邮箱的模拟操作。对于标准Gmail账户,则需通过OAuth 2.0流程获取一次…

    2026年10月5日 • 用户投稿
    100
  • 深入解析:Java REST服务中Gmail API的无用户干预访问策略

    深入解析:Java REST服务中Gmail API的无用户干预访问策略深入解析:Java REST服务中Gmail API的无用户干预访问策略深入解析:Java REST服务中Gmail API的无用户干预访问策略深入解析:Java REST服务中Gmail API的无用户干预访问策略

    本文旨在为Java REST服务集成Gmail API提供详尽指南,重点解决如何在无需用户反复干预的情况下实现API访问。文章将阐述两种主要策略:针对Google Workspace域账户的域范围授权(Domain-Wide Delegation, DWD)结合服务账户,以及针对标准Gmail账户的…

    2026年10月5日 • 用户投稿
    000
  • 如何为谷歌浏览器安装油猴插件_Tampermonkey脚本管理器的安装指南

    如何为谷歌浏览器安装油猴插件_Tampermonkey脚本管理器的安装指南如何为谷歌浏览器安装油猴插件_Tampermonkey脚本管理器的安装指南如何为谷歌浏览器安装油猴插件_Tampermonkey脚本管理器的安装指南如何为谷歌浏览器安装油猴插件_Tampermonkey脚本管理器的安装指南

    首先需安装Tampermonkey脚本管理器,可通过Chrome应用店搜索并添加扩展,或手动下载CRX文件在开发者模式下离线安装,最后可导入已有.js脚本恢复功能。 如果您尝试在谷歌浏览器中运行自定义脚本以增强网页功能,但缺少脚本管理工具,则可能是由于未安装脚本管理器。以下是解决此问题的步骤: 本文…

    2026年10月5日 • 用户投稿
    200
  • 如何在Java中使用for循环 Java for循环语法与用法

    如何在Java中使用for循环 Java for循环语法与用法如何在Java中使用for循环 Java for循环语法与用法如何在Java中使用for循环 Java for循环语法与用法如何在Java中使用for循环 Java for循环语法与用法

    java中的for循环是程序设计中基础而强大的结构,主要用于重复执行代码块。1.for循环的基本语法由三部分组成:初始化、终止条件和步进,三者用分号隔开;2.增强型for循环(foreach)适用于遍历数组或集合,语法简洁且避免索引错误,但无法修改元素或获取索引;3.break用于立即终止循环,co…

    2026年10月5日 • 用户投稿
    100
  • 如何在Java中使用Lambda表达式 Java Lambda语法和案例

    如何在Java中使用Lambda表达式 Java Lambda语法和案例如何在Java中使用Lambda表达式 Java Lambda语法和案例如何在Java中使用Lambda表达式 Java Lambda语法和案例如何在Java中使用Lambda表达式 Java Lambda语法和案例

    lambda表达式通过简化匿名内部类的冗余代码来提升java代码的简洁性和可读性,其核心语法结构为(parameters) -> expression 或 (parameters) -> { statements; }。它用于实现函数式接口,尤其在集合操作、并发编程和事件处理中广泛应用,…

    2026年10月5日 • 用户投稿
    000
  • 如何在Java中防止内存泄漏 Java内存管理优化技巧说明

    如何在Java中防止内存泄漏 Java内存管理优化技巧说明如何在Java中防止内存泄漏 Java内存管理优化技巧说明如何在Java中防止内存泄漏 Java内存管理优化技巧说明如何在Java中防止内存泄漏 Java内存管理优化技巧说明

    java防止内存泄漏的核心在于理解gc机制并主动切断无用引用链。首先,及时释放不再需要的对象引用,避免逻辑上不再需要但代码上仍存在强引用的情况。其次,正确使用java引用类型,如软引用、弱引用用于缓存场景,使对象在必要时可被gc回收。再者,妥善管理外部资源,利用try-with-resources确…

    2026年10月5日 • 用户投稿
    300
  • composer怎么在脚本中获取当前命令的名称_说明在composer脚本中获取执行命令名的方法

    composer怎么在脚本中获取当前命令的名称_说明在composer脚本中获取执行命令名的方法composer怎么在脚本中获取当前命令的名称_说明在composer脚本中获取执行命令名的方法composer怎么在脚本中获取当前命令的名称_说明在composer脚本中获取执行命令名的方法composer怎么在脚本中获取当前命令的名称_说明在composer脚本中获取执行命令名的方法

    可通过解析$argv或事件名获取Composer当前命令。1. 使用$_SERVER’argv’读取命令名,如install、update;2. 根据事件名pre-install-cmd等推断对应命令,推荐结合两种方式实现。 在 Composer 脚本中获取当前执行的命令名称…

    2026年10月4日 • 用户投稿
    100
  • VSCode如何实现智能代码补全 VSCode AI辅助编程的配置与使用技巧

    vscode实现智能代码补全的核心原理是通过语言服务器协议(lsp)连接编辑器与语言服务器,由服务器解析代码上下文、构建抽象语法树并进行类型推断,再将结构化信息返回给vscode以提供精准补全;1. 基础补全依赖intellisense与lsp,实现语法提示、参数信息和成员列表;2. 语言扩展如py…

    2026年10月4日
    200
  • PEP8 Python 编码规范整理

    决定开始Python之路了,利用业余时间,争取更深入学习Python。编程语言不是艺术,而是工作或者说是工具,所以整理并遵循一套编码规范是十分必要的。所以今天根据PEP8整理了一份,以后都照此编码了,还会持续更新。 一 代码编排 1 缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不…

    用户投稿 2026年10月3日
    100
  • Craft CMS 元素预加载:自定义参数与 PHP 数组语法陷阱解析

    本文深入探讨了在 Craft CMS 中为预加载(Eager-Loaded)元素定义自定义参数的方法,重点解决了一个常见的 PHP 语法错误:在 with() 方法中为关联元素传递参数时,误用 JavaScript 风格的对象字面量 {} 而非正确的 PHP 数组语法 []。通过具体示例,文章演示了…

    2026年10月3日
    100
  • javascript闭包怎么管理浏览器缓存

    javascript闭包怎么管理浏览器缓存javascript闭包怎么管理浏览器缓存javascript闭包怎么管理浏览器缓存javascript闭包怎么管理浏览器缓存

    闭包不能直接操作浏览器缓存,但可通过封装缓存逻辑间接影响缓存行为:1. 利用闭包维持对缓存变量的引用,实现数据的存储与检索;2. 在闭包中实现缓存过期、更新和清理策略;3. 结合http头部信息(如cache-control)决定缓存读取与更新;4. 与service worker协同实现动态缓存管…

    2026年10月2日 • 用户投稿
    100
  • javascript闭包怎么缓存DOM查询结果

    javascript闭包怎么缓存DOM查询结果javascript闭包怎么缓存DOM查询结果javascript闭包怎么缓存DOM查询结果javascript闭包怎么缓存DOM查询结果

    闭包通过保存函数创建时的词法作用域,使内部函数能持续访问外部函数中缓存的dom元素引用,从而避免重复查询。1. 创建外部函数执行一次dom查询,并将结果存储在局部变量中;2. 外部函数返回一个内部函数,该内部函数作为闭包可持久访问该变量;3. 后续调用内部函数时,直接返回已缓存的dom元素,不再执行…

    2026年10月2日 • 用户投稿
    200
  • javascript闭包怎么在WebSockets中应用

    javascript闭包怎么在WebSockets中应用javascript闭包怎么在WebSockets中应用javascript闭包怎么在WebSockets中应用javascript闭包怎么在WebSockets中应用

    javascript闭包通过封装上下文,在websockets中实现每个连接的独立状态管理;2. 利用闭包可将用户会话数据(如userid、连接状态)绑定到事件处理器,实现数据隔离与高效访问;3. 闭包提升事件监听器的可维护性与性能,通过自包含逻辑和减少运行时查找开销,使代码模块化且响应更快;4. …

    2026年10月2日 • 用户投稿
    000
  • 什么是async/await?异步编程的语法糖

    什么是async/await?异步编程的语法糖什么是async/await?异步编程的语法糖什么是async/await?异步编程的语法糖什么是async/await?异步编程的语法糖

    async/await是JavaScript异步编程的语法糖,基于Promise实现,通过同步式写法简化异步流程。async函数返回Promise,await暂停函数执行直至Promise完成,提升代码可读性与维护性。它避免回调地狱和长链式Promise,用try…catch统一处理错误…

    2026年10月1日 • 用户投稿
    200

发表回复

登录后才能评论
关注微信