第八节TypeScript 函数

1、函数的定义

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

语法:

function function_name() {
    // 执行代码
}

实例:

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

2、调用函数

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

语法:

function_name()

实例:

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

3、函数返回值

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

语法:

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

说明:

  • return_type是返回值的类型。
  • return关键字后跟着的是要返回的结果。
  • 一般情况下,一个函数只有一个return语句
  • 返回值的类型需要与函数定义的返回类型(return_type)一致。

实例:

// 函数定义
function getName(): string { // 返回一个字符串
    return "zhangDM" 
} 
 
function caller() { 
    var msg = getName() // 调用 getName() 函数 
    console.log(msg) 
} 
 
// 调用函数
caller()
  • 实例中定义了函数getName(),返回值的类型是string
  • getName()函数通过return语句返回给调用它的地方,即变量msg,之后输出该返回值。

4、带参数函数

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

语法:

function func_name( param1 [:datatype], param2 [:datatype]) {   
}
  • param1 、param2为参数名
  • datatype为参数类型

实例(TypeScript):

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

编译为JavaScript代码:

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

执行结果:3

5、可选参数与默认参数

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

实例(TypeScript):

function buildName(firstName: string, lastName?: string) {
    if (lastName)
        return firstName + " " + lastName;
    else
        return 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) {

}

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

实例(TypeScript):

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

执行结果:

计算结果:  500

计算结果:  300

6、剩余参数

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

实例(TypeScript):

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)

执行结果:

和为: 6

和为: 50

7、匿名函数

匿名函数是一个没有函数名的函数。

匿名函数在程序运行时动态声明,除了没有函数名外,其他的与标准函数一样。

我们可以将匿名函数赋值给一个变量,这种表达式就成为函数表达式。

语法:

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

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

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

执行结果:Hello!!

8、Lambda函数

Lambda 函数也称之为箭头函数。

箭头函数表达式的语法比函数表达式更短。

语法:

( [param1, param2,…param n] )=>statement;
实例(TypeScript):
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 是一个字符串

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。

        参数数量不同你可以将不同的参数设置为可选。

实例(TypeScript):

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

xyz

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

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

相关文章

论文阅读——RS DINO

RS DINO: A Novel Panoptic Segmentation Algorithm for High Resolution Remote Sensing Images 基于MASKDINO模型&#xff0c;加了两个模块&#xff1a; BAM&#xff1a;Batch Attention Module 遥感图像切分的时候把一个建筑物整体比如飞机场切分到不同图片中&#xff0c;…

五分钟学完k-means

聚类算法有很多种&#xff0c;K-Means 是聚类算法中的最常用的一种&#xff0c;算法最大的特点是简单&#xff0c;好理解&#xff0c;运算速度快&#xff0c;但是只能应用于连续型的数据&#xff0c;并且一定要在聚类前需要手工指定要分成几类。 K-Means 聚类算法的大致意思就…

Ubuntu18.04、CUDA11.1安装TensorRT

最近想试试推理加速&#xff0c;因为跑的预测有点慢&#xff0c;一开始是打算从数据处理上实现&#xff0c;采用并行数据处理&#xff0c;但是这个有所难度&#xff0c;而且有几张显卡可用&#xff0c;就想着怎么把显卡利用上。而且了解到推理加速后&#xff0c;就先尝试一下看…

1.0.0 IGP高级特性简要介绍(ISIS)

ISIS高级特性 1.LSP快速扩散 ​ 正常情况下&#xff0c;当IS-IS路由器收到其它路由器发来的LSP时&#xff0c;如果此LSP比本地LSDB中相应的LSP要新&#xff0c;则更新LSDB中的LSP&#xff0c;并用一个定时器定期将LSDB内已更新的LSP扩散出去。 IS-IS如何识别LSP的新旧&#x…

[每周一更]-(第35期):为何要用ChatGPT?

为何要用ChatGPT&#xff1f;因为她是工具&#xff0c;而人类需要工具&#xff1b; AI只要没有自主目的性的话就是工具&#xff0c;需要怕的是使用这个工具的人。掌握了提问的艺术&#xff0c;更好利用AI帮助我们完成目标&#xff1b; 最开始2022/12/07 开始注册ChatGPT使用&a…

【C++】开源:libmodbus通信协议库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍libmodbus通信协议库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#x…

PDF控件Spire.PDF for .NET【安全】演示:将加密或解密 PDF 文件

当涉及到在 Internet 上共享机密文档时&#xff0c;PDF 加密是一项至关重要的任务。通过使用强密码加密 PDF 文件&#xff0c;您可以保护文件数据免遭未经授权的人员访问。在某些情况下&#xff0c;可能还需要删除密码才能公开文档。在本文中&#xff0c;您将了解如何使用Spire…

ChatGPT一周年:开源语言大模型的冲击

自2022年末发布后&#xff0c;ChatGPT给人工智能的研究和商业领域带来了巨大变革。通过有监督微调和人类反馈的强化学习&#xff0c;模型可以回答人类问题&#xff0c;并在广泛的任务范围内遵循指令。在获得这一成功之后&#xff0c;人们对LLM的兴趣不断增加&#xff0c;新的LL…

mac电池最大充电限制 AlDente Pro中文 for Mac

热保护&#xff1a;在电池温度较高时为电池充电会导致电池老化更快。启用热保护后&#xff0c;当电池温度过高时&#xff0c;充电将自动停止。 航行模式&#xff1a;通常情况下&#xff0c;即使激活了最大电池充电&#xff0c;您的 MacBooks 电池也会始终稍微充电和放电以保持所…

linux 驱动——私有数据

文章目录 linux 驱动中的私有数据container_of驱动程序数据结构定义 应用程序模块使用 linux 驱动中的私有数据 前面的程序中&#xff0c;都只申请了一个从设备号&#xff0c;这里使用 alloc_chrdev_region 分配两个设备号&#xff0c;这两个设备共用 ops 方法。 所以需要在 …

案例101:基于微信小程序的停车共享小程序

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

基于Java+Springboot+Vue+elememt宠物用品商城系统设计实现

基于JavaSpringbootVueelememt宠物用品商城系统设计实现 &#x1f345; 作者主页 程序开发 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 文章目录 基于JavaSpringbootVueelememt宠物用品商城系统设计实…

CGAL的3D Alpha Shapes

假设我们给定一个二维或三维的点集S&#xff0c;我们希望得到类似“这些点形成的形状”的东西。这是一个相当模糊的概念&#xff0c;可能有许多可能的解释&#xff0c;阿尔法形状就是其中之一。阿尔法形状可用于从密集的无组织数据点集进行形状重建。事实上&#xff0c;阿尔法形…

跑马灯实验

4.1 实验目的 1.熟悉龙芯实验开发板、熟悉 VIVADO 的编译环境及操作流程。 2.掌握 FPGA 编程入门知识、利用门级方法实现简单逻辑电路。 3.继续学习 Verilog HDL 语法、掌握跑马灯的设计、熟悉调试过程。 4.2 实验原理及芯片 本次实验用 Verilog HDL 语言来描述 6 个不同的 …

【Spring Security】打造安全无忧的Web应用--进阶篇

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Spring Security的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.导入相关配置 1.pom 2.ym…

redis基本用法学习(C#调用NRedisStack操作redis)

redis官网文档中推荐C#中使用NRedisStack包连接并操作redis&#xff0c;本文学习C#调用NRedisStack操作redis的基本方式。   新建Winform项目&#xff0c;在Nuget包管理器中搜索并安装NRedisStack包&#xff0c;如下图所示&#xff1a; 主要调用StackExchange.Redis命名空间下…

Navicat里放大、缩小字体的快捷方法

我是偶然误触键盘把字体缩小了&#xff0c;研究以后发现的这个快捷键&#xff0c;分享给大家。 方法&#xff1a;按住【CtrlShift】组合键&#xff0c;再拖动鼠标滚轮&#xff0c;就可以缩放字体了。 缩小效果&#xff1a; 放大效果&#xff1a;

看懂PL/SQL执行计划

看懂PL/SQL执行计划 一&#xff1a;什么是Oracle执行计划&#xff1f; 执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述 二&#xff1a;怎样查看Oracle执行计划&#xff1f; 因为我一直用的PLSQL远程连接的公司数据库&#xff0c;所以这里以PLSQL为例&#xff1…

第4章Netty第二节入门案例+channel,future,promise介绍

需求 开发一个简单的服务器端和客户端 客户端向服务器端发送 hello, world服务器仅接收&#xff0c;不返回 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.39.Final</version> </d…

TrustZone之可信操作系统

有许多可信内核&#xff0c;包括商业和开源的。一个例子是OP-TEE&#xff0c;最初由ST-Ericsson开发&#xff0c;但现在是由Linaro托管的开源项目。OP-TEE提供了一个功能齐全的可信执行环境&#xff0c;您可以在OP-TEE项目网站上找到详细的描述。 OP-TEE的结构如下图所示&…