2022年8月31日:面向初学者的 web 开发--使用 JavaScript 中的函数创建模块化代码(没看懂)

2019年双十一倒计时JS代码 2019年双十一倒计时JS代码 离2019年双十一还有: 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Mark... 阅读详情

函数是要创建的任何应用程序的构建基块。 利用函数,可以创建命名的、可重用的代码节,以帮助使其更易于阅读和维护。 此模块介绍函数的核心概念。

简介

当我们考虑编写代码时,我们总是要确保代码是可读的。 虽然这句话听起来有悖直觉,但代码的读取次数确实比写入次数要多得多。

开发人员工具箱中确保代码的可维护性的一个核心工具是函数。 从本质上来说,函数是可以按需运行的代码块。 此代码可能会执行任务(例如转到网站的其他部分)或计算值(如两个数字之和)。

函数概述

函数是编写代码的关键构建基块。 函数是可重用的代码行集合,可在程序中执行某些操作。

函数非常适合需要多次执行同一任务的情况。 可以将逻辑集中在一个位置,而不是在多个位置重复逻辑(这会使得以后难以更新代码)。 这样,每当需要再次执行操作时,就可以调用它。 甚至可以从其他函数调用函数!

同样重要的是能够命名函数。 尽管命名函数看似简单,但名称提供了记录代码节的快速方法。 可以将命名视为按钮上的标签。 

创建和调用函数

函数接受一些输入,然后返回通过某种方式转换输入的输出。

函数由三个不同的组件组成:

  • 函数主体是调用函数时运行的代码块。
  • 参数是传递给函数的输入的另一个名称。
  • 最后,还有一个返回值,即函数的输出。

编写函数时,参数和返回值是可选的。 

每当你想要调用该函数时,可以使用函数的名称,后跟一对括号 (())。 值得注意的是,你可以在决定调用函数之前或之后定义函数。 无论哪种方式,JavaScript 都将找到该函数,只要它在调用范围内。

最佳实践

创建函数时,请记住几个最佳做法:

  • 使用描述函数用途的描述性名称。 例如,名称 displayGreeting 可以清楚地表明函数的用途是显示问候语。 对于执行相同任务的函数而言,类似于 greet 的名称有点含糊不清。 它可能会显示问候语,但也可能执行不同的操作。

  • 使用 camelCasing 合并单词。 若要使用 camelCase 进行编写,请将变量或函数的第一个词保持为小写,并大写每个后续单词。 由于函数和变量名称不能包含空格,因此 camelCasing 使代码中的单词更易于阅读。 例如,displayGreeting 比 displaygreeting 更易于阅读。

  • 使函数集中于特定任务。 这样做不仅会使函数在整个程序中更易于重用,还可以更轻松地调试代码。 如果遇到函数未执行你想要执行的任务的问题,则你知道问题包含在该函数中。

  • 使用注释文本批注代码,并描述函数的作用。 为提高代码的可读性,请在注释中包含每个函数任务的简短说明。 可以通过键入一个双斜杠 (//),然后键入说明来创建注释。 开始新行时,注释结束。

函数参数

为了使函数可重用性更高,将经常需要向其中传递信息。 此类型的输入称为参数。 参数有时也称为自变量,是发送到函数的其他信息。

参数在函数的定义中列出,并包含在括号 (()) 中。 可以有多个以逗号分隔的参数,如下所示:

function name(param, param2, param3) {

}

默认值

可以通过添加更多参数,使函数更加灵活。设置值的方式与设置变量值的方式大致相同。

function displayGreeting(name, salutation='Hello') {
  console.log(`${salutation}, ${name}`);
}

调用函数时,可以决定是否为称呼设置一个值,如下所示:

displayGreeting('Christopher');
// displays "Hello, Christopher"

displayGreeting('Christopher', 'Hi');
// displays "Hi, Christopher"

返回值

如果函数应返回某些内容,则使用 return 关键字,通常后跟值或对要返回的内容的引用。 不过,也可以单独使用 return 来退出函数。

创建函数

创建示例页面

首先,在 Visual Studio Code 中创建一个新页面。

打开 Visual Studio Code 终端或命令窗口。

若要创建新目录并对其进行更改,请运行以下命令之一:

# Windows
md functions && cd functions

# macOS or Linux
mkdir functions && cd functions

若要在 Visual Studio Code 中打开新目录,请运行以下命令:

code .

在“资源管理器”窗格中,将鼠标悬停在“函数”上,然后选择“新建文件”图标。

添加代码以显示消息

现在可以添加代码以显示消息。

在 index.html 文件中,以下 HTML 代码来创建 HTML 文件的核心:

<!DOCTYPE html>
<html>
<head>
    <title>Message</title>
</head>
<body>
    <script>
        // TODO: Add hello code

        // TODO: Add setTimeout code

    </script>
</body>
</html>

在 index.html 文件中,在注释行 //TODO: Add hello code 下方,通过添加以下代码来创建一个函数。

函数采用一个名为 name 的参数,并返回一个字符串,其中显示“Hello”和提供该输入的人员的姓名:

// TODO: Add hello code
function getMessage(name) {
    return 'Hello, ' + name + '...';
}

在刚才添加的代码中的右大括号 (}) 下方,添加以下代码以获取消息,并使用 document.write 将其显示在网页上。

const message = getMessage('Ornella');
document.write(message);

选择“文件”>“保存”来保存文件。

查看页面

在 Visual Studio Code 中,通过选择 Ctrl+Shift+P (Windows) 或 Cmd+Shift+P (Mac) 打开“命令面板”。

 

在“命令面板”中,通过键入“Live Server”打开 Live Server,然后选择“Live Server: 使用 Live Server 打开”。

在浏览器中打开

 

完整代码

<!DOCTYPE html>
<html>
<head>
    <title>Message</title>
</head>
<body>
    <script>
        // TODO: Add hello code
        function getMessage(name) {
            return 'Hello, ' + name + '...';
        }
        const message = getMessage('Ornella');
        document.write(message);

        // TODO: Add setTimeout code

    </script>
</body>
</html>

匿名函数

可以通过使用函数名称并传入任何适当的参数来按需调用函数。

回调简介

从本质上来说,回调是将函数作为参数传递给另一个函数的方式。 此参数的行为方式与任何其他参数(如字符串或数字)的行为方式相同,不同之处在于它可以被调用,因为它是一个函数。

回调经常用于各种框架和库中,用于指示当某些事情发生或完成时要运行的代码。

使用回调

回调是一种常规函数,你可以像创建过去编写的任何函数一样创建回调。

setTimeout 回调是允许创建计时器的内置函数。 计时器完成后,它将调用作为第一个参数传入的函数。 第二个参数指示在调用函数之前要等待的毫秒数。

如果要设置 3 秒超时,并且代码在运行完成后显示“完成!”,你可以使用 setTimeout,如下所示:

// timer value is in milliseconds
setTimeout(displayDone, 3000);

匿名函数

匿名函数是没有名称的函数。 匿名函数的行为方式与常规函数相同,它们也是开发人员通常设置回调的方式。

setTimeout(
    function() { // anonymous function
        console.log('Done!');
    },
    3000 // 3000 milliseconds (3 seconds)
)

箭头函数

箭头函数或胖箭头函数是创建匿名函数的一种略有不同的方式。 箭头函数使用 => 运算符指示函数主体的开头。

setTimeout(
    () => { // anonymous function
        console.log('Done!');
    },
    3000 // 3000 milliseconds (3 seconds)
)

创建匿名函数

完整代码:

<!DOCTYPE html>
<html>
<head>
    <title>Message</title>
</head>
<body>
    <script>
        // TODO: Add hello code
        function getMessage(name) {
            return 'Hello, ' + name + '...';
        }
        const message = getMessage('Ornella');
        document.write(message);

        // TODO: Add setTimeout code
        setTimeout(
            () => { document.write('...Hello again!')},
            2000
        );
    </script>
</body>
</html>

  1. 返回到浏览器窗口。

    “...Hello again!”消息可能已经显示,因为 Live Server 已经刷新了窗口。

  2. 刷新浏览器窗口。 请注意,显示原始消息,然后在 2 秒后,该消息被替换为“...Hello again!”消息。

已使用匿名函数使消息在延迟后显示。

JavaScript中的组件调用方式 组件可以封装特定的功能,并提供简单的调用方式,使开发人员能够轻松地在应用程序中使用它们。以上介绍了几种常见的JavaScript组件调用方式,包括函数调用方式、对象调用方式和类调用方式。无论使用哪种方式,组件的调用都是通过执行函数、方法或对象来实现的,从而实现组件的功能。开发人员可以定义一个类,将组件的功能封装在类的方法中,并通过创建类的实例来调用组件。开发人员可以创建一个对象,将组件的属性和方法封装在其中,并通过对象的方法来调用组件。类封装了组件的功能,并通过创建类的实例。对象包含了组件的属性和方法。 阅读详情

相关推荐

【Web前端面试】葵花宝典(2022版本)——JS篇(上)

本篇文章主要写的是前端高频面试题JavaScript篇(上),下下一篇我会更新相关面试题。如果没有的话,下一篇预备更新 前端高频面试题JavaScript篇(下)误区:我们经常说 get 请求参数的大小存在限制,而 post 请求的参数大小是无限制的。 实际上 HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对 get 请求参数的限制 是来源与浏览器或 web 服务器,浏览器或 web 服务器限制了 url 的长度。..................

qq_49002903的博客 3504

用函数作为另外一个函数的参数

javascript use function as argument javascript passing function parameters javascript function as parameters of another function 给一个例子。 //returns the current hour function GetCurrentHour() {

刘利新西安 560

31、Ruby Web开发与代码风格指南

本文主要探讨了Ruby Web开发中的多个关键主题,包括Sinatra框架的模块化开发方法及其运行方式,Ruby与WebAssembly的结合与应用,以及Ruby代码风格的最佳实践。此外,还介绍了如何使用RuboCop进行代码风格检查和自动纠正,以提高代码质量和团队协作效率。通过这些内容的学习,可以提升Ruby开发者在Web应用开发和代码维护方面的能力。

Pepper的专栏 57

javascript(模块模式)

javascript Module(模块)模式 从javascript对象创建说起 说起Module(模块)模式,可能一些刚刚接触javascript的同学还是觉得比较陌生,但是相信大多数学习javascript的同学都知道javascript对象创建的方式。最熟悉的莫过于构造器方式创建对象。 Constructor(构造器)模式 基本Construcor(构造器) function C

word_si的博客 355

11种图像清晰度评价函数附MATLAB代码

博主的第一篇博客! 本科毕业论文是“基于图像处理的自动对焦技术研究”,对焦过程中的一个重要阶段是图像清晰度评价,博主自己用MATLAB实现了4类清晰度评价函数:基于图像梯度的清晰度评价函数、频域评价函数、信息熵评价函数、统计学评价函数,总计11种。博主之前没有用过MATLAB,完全是本科论文需要,没办法对着别人的代...

kungfu_rabbit的博客 5万+

STM32实战:增量式PID控制气体流量(附完整代码与调参技巧)

本文详细解析了如何在STM32平台上实现气体流量控制的增量式PID算法。内容涵盖从系统硬件架构选型、增量式PID算法原理与代码实现,到ADC采样滤波、PWM驱动配置等关键外设驱动,并提供了完整的参数整定技巧与工程调优实战指南,帮助开发者构建稳定可靠的气体流量控制系统。

rose2的博客 619

JavaScript模块化开发:CommonJS、AMD到ES模块

JavaScript模块化发展历程从早期的模块模式、CommonJS、AMD到现代ES模块,反映了Web开发复杂性不断提高的需求。如今,ES模块已成为JavaScript生态系统的标准部分,被现代浏览器和Node.js原生支持。代码组织:将功能分解为独立、可管理的块封装:隐藏实现细节,只暴露必要的接口依赖管理:明确模块间的依赖关系可重用性:模块可在不同项目中重复使用可维护性:独立模块易于测试和维护按需加载:支持懒加载和代码分割。

m0_62364592的博客 1082

SAP 销售订单及发票 利润中心替代 Userexit出口 配置及程序

在跨公司销售业务中,跨公司销售订单的发票时无法从销售订单中将利润中心带到发票中,所以在跨公司的发票创建过程中需要配置出口来获取对应销售订单行项目的利润中心。 事务代码: 0KEM 配置步骤: 1、创建一个新的替代 2、创建一个步骤 3、维护一个先决条件,比如针对于特定工厂 PCASUB-VKBUR = '0001' 4、选择替代程序FORM,FORM必须为指定程序中存在的FORM名 5、编辑替代程序FORM 实现效果: 在程序FORM中打上断点 ...

李威威wiwi的博客 5069

虽然写了不少前端代码,但是我真没搞懂什么是 JavaScript

本文回顾了 JavaScript 发展的历史,以及在各种浏览器和 Node.js 环境中,事实上标准分裂的现状,但是编译器有着化腐朽为神奇的功效,可以通过指定目标运行环境的标准,来让编译器弥平环境差异。所以,建议我们总是采用最新的 ECMAScript 标准来编写自己的代码,以获得更多语法上的支持,提升编程的体验。

Becomin' Charles 1256

手把手教你用WF100DPZ数字压力传感器搞定I2C/SPI通信(附完整寄存器解析)

本文详细解析了WF100DPZ数字压力传感器的I2C与SPI通信驱动方法,涵盖硬件连接、寄存器配置、数据读取流程及常见问题排查。该传感器内置24位ADC和出厂校准,通过实战代码演示了如何稳定获取高精度压力与温度数据,帮助开发者快速集成到嵌入式项目中。

weixin_28285943的博客 377

hcaptcha逆向实战:从API解析到参数构造的完整链路

本文详细拆解了hcaptcha验证码的逆向实战流程,从环境准备、捕获API与版本号,到解析核心加密逻辑hsw.js,再到构造getcaptcha请求参数,最后完成验证提交。文章重点剖析了motionData、n、c等关键参数的获取与构造方法,为开发者模拟浏览器行为、实现自动化验证提供了清晰的完整链路指南。

ik678901的博客 629

2022需求最大的 8 种编程语言:Python第二,ta居榜首

从2021年10月到2022年11月(14个月),DevJobsScanner共发现了801K个工作机会,明确要求将 JavaScript或TypeScript作为编程语言,约占工作岗位总数的31%。例如,在2021年10月PHP的需求还只占总需求的约5%,但到2022年11月占比就已经接近10%,自C语言的首次发布至今已有50年的历史,距离后来出现C++已经过去了37年,C++最初的名字是"C with Classes"。的编程语言,主要是为了解决C++的一些弱点而创建的。作为一种通用语言,C#

马士兵教育 3万+

A2B音频总线在智能座舱中的应用

车载A2B链路音频是智能座舱的核心功能,涵盖车载音响、语音识别、e-Call、消噪及回声消除等应用,随着汽车智能网联化的发展,对音频的开发要求也越来越高,需要加入更先进、功能丰富的信息娱乐功能以满足消费者的用户体验。但传统的模拟并行音频信号传输方式,难以在功能增加与整车轻量化(线缆的重量及成本减少)之间取得均衡。这时候就需要A2B音频总线了。A2B音频总线用于连接车辆中的音频设备,如麦克风(MIC)、功放(AMP)、多媒体主机(Head Unit)和T-BOX等。通过一条低成本的非屏蔽双绞线UTP,进行跨距

怿星科技的博客 3934

【JavaScript】JavaScript中的时间函数

介绍JavaScript中的时间函数。

jiangwei0512的博客 923

YOLO11改进 - 卷积Conv | DEGConv(方向引导边缘门控卷积) : 空间分块、方向先验、轻量边缘增强

本文介绍了方向引导边缘门控卷积(DEGConv),一种专为增强边缘敏感度与方向感知能力设计的轻量级模块。该方法通过 Sobel 算子生成方向嵌入,结合条纹卷积提取水平与垂直边缘特征,并利用门控机制动态抑制背景噪声,从而精准捕捉细粒度结构。我们将 DEGConv 成功集成进 YOLO11,在 Backbone 的 SPPF 后及 Neck 的 P3、P4 分支中引入该模块以优化特征提取。实验证明,集成 DEGConv 的 YOLO11 在检测任务中表现优异,有效提升了模型对复杂边缘与方向特征的建模能力。

魔改工程师的博客 676

KingSCADA3.8保姆级安装教程

大家好,我是雷工!最近开始学习KingSCADA,今天这篇详细记录安装KingSCADA3.8的过程。首先下载需要的安装版本,此处以从官网下载的最新版本KingSCADA3.8为例,双击:Setup.exe;

做有价值的事,积累有价值的笔记! 1万+

2022年编程语言热度排行榜来啦,快来看看你学习的语言排第几

一直以来,编程语言都是程序员非常关注的话题。年末将至,是否会有程序员发出疑问——“2022 年行业需求最大的编程语言,花落谁家?”从 2021 年 10 月到 2022 年 11 月,DevJobsScanner 分析了超过 1200 万个开发人员职位。从这 1200 万份工作中,DevJobsScanner 挑选了明确需要编程语言的工作岗位。现在,一起回顾 2022 年行业需求最大的 8 种编程语言。

veratata的博客 5391

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

前端食堂技术周刊第 65 期:2022 Vue 年终总结、2022 HTTP 状态、12 月登陆 Web 平台的新功能、Bun v0.4、JavaScript 框架之迈向 2023 年

- 2022 Vue 年终总结 - 2022 HTTP 状态 - 12 月登陆 Web 平台的新功能 - Bun v0.4 - JavaScript 框架之迈向 2023 年 - Web 开发资源

童欧巴的博客 427

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

2022 年需求最大的 8 种编程语言

摘要:本文中,将带你一起回顾 2022 年行业需求最大的 8 种编程语言。原文链接:https://www.devjobsscanner.com/blog/top-8-most-demanded-languages-in-2022/声明:本文为 优快云 翻译,未经允许禁止转载。作者 |Logan dev译者 | 朱珂欣 责编 | 梦依丹出品 | 优快云(ID:优快云news)一直以来,...

优快云资讯 5977

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

黑马JavaWeb开发跟学(二)Web前端开发JavaScript、Vue基础

黑马JavaWeb开发跟学(二)Web前端开发JavaScript基础

心向阳光的天域的博客 1529

【蓝桥杯web组】js

Documen object model 文档对象模型,是一种用于html和xml文档的编程接口,给文档提供可一种结构化的表示方法,可以修改文档的内容和结构DOM可以把网页和脚本语言以及其他编程语言联系起来Dom在开发中主要是用于操作元素(标签)为了保存数据并使用时数据,有些数据可以保存在页面,不需要数据库。设置一个属性和值(键值对)i++)//设置自定义属性,值为数组的下标顺序//循环给每一个div添加点击事件。

yucherryzixuan的博客 765

Formula.js vs Excel:日期函数差异及解决方案

Formula.js是一款强大的JavaScript库,实现了大多数Microsoft Excel公式函数,让开发者能够在Web应用中轻松使用Excel兼容的日期计算功能。本文将深入剖析Formula.js与Excel在日期函数处理上的核心差异,并提供实用的解决方案,帮助你避免常见的日期计算陷阱。 ## 📅 日期系统基础差异 Excel使用1900年日期系统,将1900年1月1日定义为序列号

gitblog_00333的博客 744

2022年需求最大8种编程语言!(详细解读)

2022年需求最大8种编程语言!(详细解读)

wzk4869的博客 6632

2020年8月10日31---Html知识介绍

''' ================================== cooding:utf-8 @Time :2020/8/11 21:09 @Author :henry @Email :yinpingwei@gmail.com @File :web_day1.py @Software:PyCharm =================================== ''' ''' selenium -- web网页自动化 -- 功能自动化 前端: 由html

henry_rhy的博客 660

JavaScript三种创建构造函数的方式

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>JS三种创建构造函数方式</title> 6 </head> 7 <body> 8 </...

weixin_33836874的博客 311
上一篇: Array类(C#)
下一篇: 2022年9月1日:在 Visual Studio Code 中使用 Git 版本控制工具(未完成)
DXB2021
博客等级 码龄5年 307粉丝 289原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值