ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

3.函数

2022-07-27 10:33:09  阅读:123  来源: 互联网

标签:function 函数 number 参数 返回值 foo


函数

一、基础语法

JS 中创建函数分为两种方式:函数声明、函数表达式。

1、函数声明

在 JS 中函数声明的语法如下:

function 函数名(形参名) {
    return 返回值;
}

在 TS 中函数声明的语法如下:

function 函数名(形参名: 数据类型): 返回值类型 {
    return 返回值;
}

2、函数表达式

在 JS 中函数表达式的语法如下:

const 变量名 = function(形参名) {
    return 返回值
}

在 TS 中函数表达式的语法涉及到变量的赋值,因此,TS 中函数表达式的语法分为以下几种情况:

1)只约束参数和返回值的类型
const 变量名 = function(形参名: 数据类型): 返回值类型 {
    return 返回值
}
2)只约束变量的类型
const 变量名: (形参名: 数据类型) => 返回值类型 = function(形参名) {
    return 返回值
}
3)约束参数、返回值以及变量的类型
const 变量名: (形参名: 数据类型) => 返回值类型 = function(形参名: 数据类型): 返回值类型 {
    return 返回值
}

通常,约束了变量 的类型,就不需要再去函数中约束参数和返回值的类型了。形式一和形式二任选其一即可。

二、函数参数

1、基本类型的参数

function foo(name: string, age: number) {
    console.log(name, age);
}
foo('张三', 20)

2、参数为数组

function foo(arr: number[]) {
    console.log(arr);
}
foo([1, 2, 3])

3、参数为对象

function foo(student: { name: string, age: number }) {
    console.log(student);
}

foo({ name: '张三', age: 20 })

4、参数的默认值

function foo(name: string, age: number = 20) {

}
foo('李四')

注意:通常将带默认值的参数放在所有形参的最后。

5、可选参数

可选参数,指的就是当前参数可以传也可以不传:

function foo(name: string, age?: number) {

}
foo('李四')

注意:通常将带可选参数放在所有形参的最后。

6、不定参数(剩余参数)

形参中在参数名的前面加上 ...,该参数就变成了不定参数。不定参数的值永远都是一个数组。

function foo(a: number, ...b: number[]) {

}
foo(1, 2, 3)

注意:不定参数必须放在所有形参的最后。

三、函数的返回值

1、基本类型的返回值

function foo(): string {
    return 'hello'
}

2、返回数组

function foo(): number[] {
    return [1, 2, 3]
}

3、返回对象

function foo(): { x: number, y: number } {
    return { x: 1, y: 2 }
}

4、没有返回值

function foo(): void {

}

四、箭头函数

const add = (x: number, y: number): number => x + y;
const add: (x: number, y: number) => number = (x, y) => x + y;

标签:function,函数,number,参数,返回值,foo
来源: https://www.cnblogs.com/web-simon/p/16523824.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有