当前位置:首页>鸿蒙APP>【鸿蒙应用开发】ArkTS函数的定义与使用

【鸿蒙应用开发】ArkTS函数的定义与使用

  • 2026-08-17 07:35:17
【鸿蒙应用开发】ArkTS函数的定义与使用

ArkTS函数

定义与使用

哈喽同学们!👋上一章咱们搞定了ArkTS的基础语法,为了帮助大家更好地理解赛项要求、提前进入鸿蒙应用开发的学习状态,小蓝今天将带大家开启 ArkTS 编程第二站 —— 函数!

你想想:写代码时遇到重复逻辑,难道要复制粘贴一遍又一遍?改需求时难道要在几百行代码里大海捞针?

NONONO!函数就是来拯救你的「重复劳动」,让你高效摸鱼(bushi)高效开发的神器~ 今天咱们就从「是什么、为什么、怎么用」三个角度,把函数拿捏得明明白白!

01

函数是什么?

通俗解释

函数就是一段「封装好的、可重复使用的代码块」,就像工厂里的流水线:你给它送「原料」(参数),它按固定逻辑加工,最后给你吐「产品」(返回值);就算不给原料、不吐产品,它也能帮你干固定的活(比如打印日志)。

官方定义

在ArkTS中,函数是组织代码的基本单元,用于实现特定功能。核心结构包含4部分:

  • 函数名:工具人的名字(比如「计算器」「打招呼」)

  • 参数:给工具人的原料(可选)

  • 函数体:工具人的工作流程(核心逻辑)

  • 返回值:工具人产出的结果(可选)

举个🌰(符合规范的极简函数)

// 这是一个「打招呼」工具人:接收名字,返回问候语,还打印日志 

function greetUser(userName: string): string {  

const greeting = `Hello ${userName}!欢迎学习鸿蒙开发~`;  

console.log('测试 打招呼结果', greeting); // 严格遵守打印格式要求  

return greeting; 

}

看看这个例子多规矩!完全符合ArkTS规范:

  • 函数名greetUser:小驼峰(lowerCamelCase),动词短语开头(greet+User)

  • 大括号{:和函数声明在同一行(不换行!不换行!)

  • 参数名userName:小驼峰,类型明确标注(string)

  • 返回值类型:明确标注为string(不偷懒省略)

鸿蒙应用开发专项赛

鸿蒙应用开发赛项旨在全面考察参赛者在鸿蒙生态系统下的应用开发综合能力与工程实践水平。本赛项聚焦鸿蒙原生应用开发,要求选手在真实的鸿蒙开发环境中,深入理解应用需求,灵活运用ArkTS语言、ArkUI框架及鸿蒙系统开放能力,独立完成从应用开发、调试到打包的全流程,重点考察其在真实开发场景下解决复杂问题的工程实践能力。

  • 参赛对象:具有正式全日制学籍并且符合相关科目报名要求的研究生、本科及高职高专学生(以报名时状态为准)。

  • 报名时间截止时间

    • 2026年3月11日14:00

  • 比赛时间

    • 省赛:2026年4月25日

    • 全国总决赛:2026年6月

02

为什么需要函数? 

拒绝「重复劳动」,拥抱「高效摸鱼」

咱们程序员的终极追求是「写最少的代码,干最多的活」,函数就是实现这个追求的核心!没有函数的代码,就像没整理的房间——乱得一批,还难找东西。

1

代码复用:一次编写,N次调用

比如要做一个鸿蒙计算器App,加减乘除逻辑要反复用。没有函数的话:

// 反例:重复写加法逻辑,累到想哭

 let a = 10, b = 20; 

console.log('测试 加法结果', a + b); 

let c = 30, d = 40; 

console.log('测试 加法结果', c + d); // 复制粘贴×1

let e = 50, f = 60; 

console.log('测试 加法结果', e + f); // 复制粘贴×2

有了函数之后:

// 正例:写一次加法函数,想调用多少次就多少次

function addNumbers(num1: number, num2: number): number {  

const result = num1 + num2;  

console.log('测试 加法结果', result);  

return result; 

} 

 // 调用3次,轻松搞定! 

addNumbers(10, 20); 

addNumbers(30, 40); 

addNumbers(50, 60);

2

可读性提升:见名知意,不用猜

函数名起得好,注释都省了!比如calculateSum(计算总和)、checkUserLogin(检查用户登录),别人一看就知道这代码是干啥的——再也不用对着一堆乱码猜半天:「这行代码到底在搞啥?」

3

维护方便:改一处,全处生效

如果产品经理说「加法要改成四舍五入保留1位小数」,没有函数的话,你得改所有复制粘贴的地方;有函数的话,只改addNumbers里的逻辑就行:

function addNumbers(num1: number, num2: number): number {  

const result = Math.round((num1 + num2) * 10) / 10; // 只改这一行  

console.log('测试 加法结果(保留1位小数)', result);  

return result; 

}

4

逻辑拆分:大问题变小,好下手

比如做一个「用户注册」功能,包含「验证手机号」「检查密码强度」「提交服务器」三个步骤。用函数拆分后,每个函数只干一件事,逻辑清晰,调试也方便:

// 拆分后:每个函数负责一个小功能 

function validatePhone(phone: string): boolean { /* 验证手机号 */ } 

function checkPasswordStrength(pwd: string): boolean { /* 检查密码 */ } 

function submitToServer(userInfo: User): void { /* 提交服务器 */ }

03

怎么用函数?

手把手教你「召唤工具人」

接下来是实战环节!从「定义」到「进阶」,一步步教你写出符合鸿蒙规范的函数,还会避坑哦~

01

基础操作:定义+调用函数

语法结构(必背!)

// 有参数、有返回值 

function 函数名(参数1: 类型, 参数2: 类型): 返回值类型 {  

// 函数体:核心逻辑  

return 结果; // 有返回值必须写return 

} 

 // 无参数、无返回值(返回值类型为void) 

function 函数名( ): void {  

// 函数体:比如打印日志 

}

规范要求(重点!)

  • 命名:函数名用lowerCamelCase(小驼峰),动词/动词短语开头(如greet「打招呼」、calculate「计算」、check「检查」)

  • 空格:函数名和(之间不加空格,if/for等关键字和(之间才加空格(别搞混啦!)

  • 大括号:{和函数声明在同一行,不要换行

  • 参数:多个参数之间用逗号分隔,逗号后加1个空格;参数必须标注类型(别偷懒!)

  • 返回值:尽量标注返回值类型(ArkTS能推断,但规范要求明确标注,可读性更高)

正确例子(符合所有规范)

// 有参数、有返回值:计算两数乘积 

function calculateProduct(num1: number, num2: number): number {  

const product = num1 * num2;

console.log('测试 两数乘积', product);  

return product; 

} 

 // 无参数、无返回值:打印欢迎语 

function printWelcomeMsg( ): void {

console.log('测试 欢迎语', '欢迎使用鸿蒙函数工具!'); 

} 

// 调用函数 

const result = calculateProduct(4, 5); // 调用有返回值的函数,接收结果

printWelcomeMsg(); // 调用无返回值的函数,直接执行

错误例子(避坑!)

// 错误1:函数名和()之间加了空格(规范禁止)

function calculateProduct (num1: number, num2: number): number { /* ... */ } 

// 错误2:大括号换行了(规范要求同一行) 

function printWelcomeMsg(): void

{ /* ... */ } 

// 错误3:参数没标注类型(规范要求必须标注)

function calculateProduct(num1, num2) { /* ... */ }

02

参数进阶:可选参数+默认参数

有时候工具人不需要固定的原料,可多可少、可填可不填——这就是可选参数和默认参数!

可选参数(?标记)

语法:参数名后加?,表示这个参数可传可不传(可选参数必须放在必填参数后面!)

// 可选参数:userAge是可选的(可传可不传) 

function introduceUser(userName: string, userAge?: number): string {  

let intro = `我叫${userName}`;  

if (userAge) {    

intro += `,今年${userAge}岁`;  

}  

console.log('测试 用户介绍', intro);  

return intro; 

} 

 // 调用:可以不传可选参数 

introduceUser('张三'); // 正确:只传必填参数 

introduceUser('李四', 25); // 正确:传必填+可选参数

默认参数(=赋值)

语法:参数名后加= 默认值,表示没传这个参数时,用默认值(默认参数也得放在必填参数后面)

// 默认参数:greeting默认是"你好" 

function sayHello(userName: string, greeting: string = '你好'): void {  

const msg = `${greeting},${userName}!`;  

console.log('测试 问候语', msg); 

} 

// 调用:可以不传默认参数 

sayHello('王五'); // 输出:测试 问候语 你好,王五!(用默认值) 

sayHello('赵六', '哈喽'); // 输出:测试 问候语 哈喽,赵六!(传自定义值)

03

返回值进阶:void vs 具体类型

有返回值:函数体里必须有return 结果,返回值类型要和标注的一致

无返回值:返回值类型标注为void,函数体里可以省略return(或只写return;)

04

高级玩法:箭头函数(=>)

箭头函数是函数的「简化版写法」,语法更简洁,尤其适合作为参数传递(比如数组遍历)!

语法结构

// 完整写法(有参数、有返回值) 

const 函数名 = (参数1: 类型, 参数2: 类型): 返回值类型 => {  

// 函数体  

return 结果; 

}; 

 // 简化写法(只有一行代码,可省略{}和return) 

const 函数名 = (参数1: 类型, 参数2: 类型): 返回值类型 => 表达式;

例子(结合数组遍历,符合规范)

ArkTS规范要求「数组遍历优先使用Array对象方法」(如map「forEach」),箭头函数和它们是绝配!

// 例子1:简化普通函数 

const multiply = (a: number, b: number): number => a * b; 

console.log('测试 箭头函数乘法', multiply(3, 6)); // 输出:测试 箭头函数乘法 18 

// 例子2:数组遍历(重点!符合规范) 

const numbers = [1, 2, 3, 4, 5]; 

// 用map遍历数组,每个元素乘2(箭头函数作为参数) 

const doubledNumbers = numbers.map((num: number): number => num * 2); 

console.log('测试 数组元素翻倍', doubledNumbers); // 输出:测试 数组元素翻倍 [2,4,6,8,10] 

// 例子3:forEach遍历(打印每个元素) 

numbers.forEach((num: number): void => {  

console.log('测试 数组元素', num); 

});

规范提醒

箭头函数的=>前后要各加1个空格,参数和=>之间、=>和函数体之间都不能少!

// 正确:=>前后有空格 

const add = (a: number, b: number): number => a + b; 

// 错误:=>前后没空格 

const add = (a: number, b: number): number=>a + b;

04

总结:函数的核心价值——

「一次封装,终身受益」

同学们,今天咱们搞定了函数的「是什么、为什么、怎么用」:

  • 函数是「万能工具人」:封装代码,重复使用

  • 用函数的理由:少写重复代码、提高可读性、方便维护、拆分逻辑

  • 关键规范:小驼峰命名、空格使用、大括号位置、参数/返回值类型标注

记住一个口诀:「命名动词开头,小驼峰不能改;括号前后空格分清楚,类型标注不偷懒;箭头函数简化写,数组遍历超方便!」

接下来就动手实践吧~ 试着写几个函数:比如「计算圆的面积」「检查字符串是否为空」「遍历数组打印偶数」,记得遵守规范,用console.log('测试', xxx)打印结果哦!

最新文章

随机文章