当前位置: 首页 > news >正文

TypeScript(七) 函数

1. TypeScript 函数

1.1. 函数的定义

  函数就是包裹在花括号中的代码块,前面使用关键字function。
语法:

// An highlighted block
function function_name() {// 执行代码
}

实例:

function test() {   // 函数定义console.log("我就是创建的名称为test的函数") 
} 

1.2. 调用函数

  函数只有通过调用才可以执行函数内的代码。
语法:

function_name()

实例:

function test() {   // 函数定义console.log("我就是创建的名称为test的函数") 
} 
test(); // 调用函数

1.3. 函数返回值

  有时我们希望函数将执行的结果返回到调用它的地方,这个需要通过return语句来实现,使用return语句时,函数就会停止,并返回指定的值。
语法:

function function_name(): return_type { // 语句return value; 
}

说明:
(1)return_type是返回值的类型。
(2)return关键字后跟着的是要返回的结果。
(3)一般情况下,一个函数只有一个return语句
(4)返回值的类型需要与函数定义的返回类型(return_type)一致。
实例:

// 函数定义
function getName(): string { // 返回一个字符串return "zhangDM" 
} 
function caller() { var msg = getName() // 调用 getName() 函数 console.log(msg) 
} // 调用函数
caller()

(5)实例中定义了函数getName(),返回值的类型是string
(6)getName()函数通过return语句返回给调用它的地方,即变量msg,之后输出该返回值。

1.4. 带参数函数

  上述咱们定义的函数都是无参函数,有参数函数是指可向函数传递值,并且向函数可以发送多个参数,每个参数使用“,”逗号分隔。
语法:

function func_name( param1 [:datatype], param2 [:datatype]) {   
}

(1)param1 、param2为参数名
(2)datatype为参数类型
实例:

function add(x: number, y: number): number {return x + y;
}
console.log(add(2,3))

执行结果:5

1.5. 可选参数与默认参数

  在TypeScript函数里,如果我们定义了参数,则我们就必须传入这些参数,除非将这些参数设置为可选,可选参数使用问号标识“?”。
实例:

function buildName(firstName: string, lastName?: string) {if (lastName)return firstName + " " + lastName;elsereturn firstName;
}
let result1 = buildName("Bob");  // 正确
let result2 = buildName("Bob", "Adams", "Sr.");  // 错误,参数太多了
let result3 = buildName("Bob", "Adams");  // 正确

默认参数格式:

function function_name(param1[:type],param2[:type] = default_value) {}

注意:参数不能同时设置为可选和默认。

实例:

function calculate_discount(price:number,rate:number = 0.50) { var discount = price * rate; console.log("计算结果: ",discount); 
} 
calculate_discount(1000) 
calculate_discount(1000,0.30)

执行结果:
在这里插入图片描述

1.6. 剩余参数

  有一种情况,我们不知道要传入多少个参数,这个时候就可以使用剩余参数来定义。
实例:

function addNumbers(...nums:number[]) {  var i;   var sum:number = 0; for(i = 0;i<nums.length;i++) { sum = sum + nums[i]; } console.log("和为:",sum) } addNumbers(1,2,3) addNumbers(10,10,10,10,10)

执行结果:
在这里插入图片描述

1.7. 匿名函数

  匿名函数是一个没有函数名的函数。
  匿名函数在程序运行时动态声明,除了没有函数名外,其他的与标准函数一样。
  我们可以将匿名函数赋值给一个变量,这种表达式就成为函数表达式。
语法:

var res = function( [arguments] ) { ... }

  匿名函数自调用是在函数后使用()即可:

(function () { var x = "Hello!!";   console.log(x)     })()

**执行结果:**Hello!!

1.8. Lambda函数

  Lambda 函数也称之为箭头函数。
  箭头函数表达式的语法比函数表达式更短。
语法:

( [param1, param2,…param n] )=>statement;

实例:

var foo = (x:number)=>10 + x 
console.log(foo(100))      //输出结果为 110

执行结果:110
  函数是一个语句块:

( [param1, param2,…param n] )=> {// 代码块
}

  我们可以不指定函数的参数类型,通过函数内来推断参数类型:

var func = (x)=> { if(typeof x=="number") { console.log(x+" 是一个数字") } else if(typeof x=="string") { console.log(x+" 是一个字符串") }  
} 
func(12) 
func("Tom")

执行结果:
12 是一个数字
Tom 是一个字符串

1.9. 函数重载

  重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。
  每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
(1)参数类型不同:

function disp(string):void; 
function disp(number):void;

(2)参数数量不同:

function disp(n1:number):void; 
function disp(x:number,y:number):void;

(3)参数类型顺序不同:

function disp(n1:number,s1:string):void; 
function disp(s:string,n:number):void;

  如果参数类型不同,则参数类型应设置为 any。
  参数数量不同你可以将不同的参数设置为可选。
实例:

function disp(s1:string):void; 
function disp(n1:number,s1:string):void; 
function disp(x:any,y?:any):void { console.log(x); console.log(y); 
} 
disp("abc") 
disp(1,"xyz");

执行结果:
abc
undefined
1

相关文章:

TypeScript(七) 函数

1. TypeScript 函数 1.1. 函数的定义 函数就是包裹在花括号中的代码块&#xff0c;前面使用关键字function。 语法&#xff1a; // An highlighted block function function_name() {// 执行代码 }实例&#xff1a; function test() { // 函数定义console.log("我就是…...

学fpga和还是嵌入式?

具体要选哪个&#xff0c;更多还是看个人喜好还有基础知识结构。 我们先来明白下两者区别在哪&#xff1f; 1、嵌入式&#xff1a;分两部分&#xff0c;第一是嵌入式软件开发&#xff0c;主要与嵌入式操作系统、应用软件等有关。第二是嵌入式硬件开发&#xff0c;需要掌握硬件…...

Day01-变量和数据类型课后练习-参考答案

文章目录 1、输出你最想说的一句话&#xff01;2、定义所有基本数据类型的变量和字符串变量3、用合适类型的变量存储个人信息并输出4、定义圆周率PI5、简答题 1、输出你最想说的一句话&#xff01; 编写步骤&#xff1a; 定义类 Homework1&#xff0c;例如&#xff1a;Homewo…...

Docker 数据管理、容器互联、网络与资源控制

一、docker数据管理 管理 Docker 容器中数据主要有两种方式&#xff1a;数据卷(Data volumes)和数据卷容器(Datavolumes containers)。 1、数据卷 数据卷是一个供容器使用的特殊目录&#xff0c;位于容器中。可将宿主机的目录挂载到数据卷上&#xff0c;对数据卷的修改操作立…...

密码加密——MD5与BCryptPasswordEncoder

目录 一、问题 二、密码加密 1、MD5密码加密 2、BCryptPasswordEncoder加密&#xff08;推荐&#xff09; 2.1 特点 2.2 使用步骤 一、问题 在数据库表中的密码都是明文存储的&#xff0c;安全性太低 需求&#xff1a; 将密码加密后存储&#xff0c;提高安全性 二、密码加密…...

利用外卖系统源码构建高效的在线订餐平台

在当今数字化时代&#xff0c;外卖服务已成为人们日常生活中不可或缺的一部分。为了满足用户需求&#xff0c;许多创业者和企业都希望搭建自己的在线订餐平台。利用现有的外卖系统源码&#xff0c;可以快速构建一个高效、安全的在线订餐平台。本文将介绍如何利用外卖系统源码来…...

数据分析数据 -(用数据讲故事)

书中有一句话我很喜欢- 献给大家 一个完美的设计&#xff0c;不是因为它没有多余的东西可以添加&#xff0c;而是它没有多余的部分可以删减 首先看几个对比的图形分析 处理工单和新增工单的随月份的变化趋势 这个图形的缺点就是 1: 月份对齐的情况 2&#xff1a;使用条形图需…...

如何运用5W2H分析法分析自己适合哪种办公室

随着时代的发展&#xff0c;办公室已经不再是传统的四壁之内&#xff0c;而是多种多样的形态&#xff0c;涵盖了开放式办公区、远程办公、共享办公空间等多种选择。对于刚刚创业的企业来说&#xff0c;选择一个适合自己发展的办公室至关重要。在这个过程中&#xff0c;运用5W2H…...

为什么考虑电子采购而非传统采购?

采购是重要的业务职能之一&#xff0c;为实现无缝运营而大规模采购商品或服务的行为。考虑到数字化转型带来的影响&#xff0c;决策者对于应维持传统采购还是转向电子采购或多或少会有困惑。 通过本文&#xff0c;你将更了解电子采购和传统采购&#xff0c;从而为业务连续性采…...

【git】git update-index --assume-unchanged(不改动.gitignore实现忽略文件)

文章目录 原因分析&#xff1a;添加忽略文件(取消跟踪)的命令&#xff1a;取消忽略文件(恢复跟踪)的命令&#xff1a;查看已经添加了忽略文件(取消跟踪)的命令&#xff1a; 原因分析&#xff1a; 已经维护的项目&#xff0c;文件已经被追踪&#xff0c;gitignore文件不方便修…...

科普类——无压缩图像传输带宽的计算(七)

无压缩图像传输带宽的计算 问题计算 问题 要计算1080p&#xff08;1920x1080&#xff09;分辨率的彩色图像在30帧每秒&#xff08;fps&#xff09;下的带宽需求&#xff0c;我们需要考虑图像的颜色深度&#xff08;位深&#xff09;和压缩情况。假设我们使用的是无压缩的RGB图…...

云原生周刊:K8s 1.26 到 1.29 版本的更新 | 2024.1.29

开源项目推荐 Skaffold Skaffold 是一个命令行工具&#xff0c;有助于 Kubernetes 应用程序的持续开发。您可以在本地迭代应用程序源代码&#xff0c;然后部署到本地或远程 Kubernetes 集群。Skaffold 处理构建、推送和部署应用程序的工作流程。它还提供构建块并描述 CI/CD 流…...

手机壳也能散热了?

作为一个玩了6年的王者荣耀玩家&#xff0c;手机发热真的很影响游戏体验&#xff01;&#xff01;游戏掉帧&#xff0c;性能下降很恼人&#xff0c;试过好几个散热工具&#xff0c;实际效果都不太好&#xff5e; 自从入了Mate 60之后&#xff0c;看着这款微泵液冷壳毫无犹豫第…...

《微信小程序开发从入门到实战》学习九十七

7.3 表单组件 7.3.1 picke-view与picker-view-column组件 一个picker-view-column代表 一个滚动选择器子项&#xff0c;一个picker-view组件可以包含多个picker-view-column组件&#xff0c;这样可以一次性选择多项内容如年、月、日等。 picker-view-column组件中需包含多个…...

二极管漏电流对单片机ad采样偏差的影响

1&#xff0c;下图是常规的单片机采集电压电路&#xff0c;被测量电压经过电阻分压&#xff0c;给到mcu采集&#xff0c;反向二极管起到钳位作用&#xff0c;避免高压打坏mcu。 2&#xff0c;该电路存在的问题 二极管存在漏电流&#xff0c;会在100k电阻上产生叠加电压&#x…...

三、防御保护---防火墙安全策略篇

三、防御保护---防火墙安全策略篇 一、什么是安全策略二、安全策略的组成1.匹配条件2.动作3.策略标识 三、防火墙的状态检测和会话表1.会话表2.状态检测技术 四、ASPF--隐形通道五、用户认证1.用户认证的分类2.认证方式3.认证策略4.认证域 一、什么是安全策略 传统的包过滤防火…...

【学网攻】 第(15)节 -- 标准ACL访问控制列表

系列文章目录 目录 系列文章目录 文章目录 前言 一、ACL(访问控制列表)是什么? 二、实验 1.引入 实验拓扑图 实验配置 测试PC2能否Ping通PC3 配置ACL访问控制 实验验证 PC1 Ping PC3 总结 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认…...

【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解

【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解 提示:最近开始在【医学图像分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解前言UNet模型运行环境搭…...

MySQL十部曲之一:MySQL概述及手册说明

文章目录 数据库、数据库管理系统以及SQL之间的关系关系型数据库与非关系型数据库MySQL程序系统变量系统状态变量SQL模式MySQL数据目录手册语法约定 数据库、数据库管理系统以及SQL之间的关系 名称说明数据库&#xff08;Database&#xff09;即存储数据的仓库&#xff0c;其本…...

node.js基础--01

Author nodes&#xff1a;&#xff08;题记&#xff09; node.js is an open-source&#xff0c;cross-platform JAVAScript runtime environment。 node.js是一个开源&#xff0c;跨平台的js运行环境 common commands&#xff08;常用指令&#xff09; 1、C: enter hard …...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...