[HarmonyOS][K老师]鸿蒙中函数的使用?
原创
13687 浏览 373 点赞 0 收藏
1. 函数核心概念
| 概念 | 说明 | ArkTS 示例 |
|---|---|---|
| 定义 | 可重复使用的代码块 | function sum(a: number, b: number): number { ... } |
| 调用 | 通过函数名执行代码块 | let result = sum(3, 5); |
| 参数 | 函数与外部的数据接口 | |
| 返回值 | 函数执行结果的对外输出 | return a + b; |
| 箭头函数 | 比普通函数更简洁的语法(ES6+特性) | const double = (x: number) => x * 2; |
2. 参数详解
(1) 形参 vs 实参
// 形参(形式参数):定义时声明
function greet(name: string, age: number) { ... }
// 实参(实际参数):调用时传入
greet("Alice", 25); // "Alice"和25是实参(2) 参数特性
| 类型 | 语法 | 示例 |
|---|---|---|
| 必选参数 | (param: type) | (name: string) |
| 可选参数 | (param?: type) | (age?: number) → 可传入 undefined |
| 默认参数 | (param = defaultValue) | (count = 10) |
| 剩余参数 | (...args: type[]) | (...numbers: number[]) |
3. 返回值关键机制
(1) 基本使用
// 显式返回值
function getPrice(): number {
return 99.9;
}
// 无返回值(void)
function showError(): void {
console.error("Failed!");
}(2) ArkTS 特殊场景
// UI组件中的函数(需返回Builder对象)
@Component
struct MyButton {
build(): void { // 必须返回void
Button("Click")
}
}
// 异步函数返回Promise
async function fetchData(): Promise<Data> {
const res = await http.get(...);
return res.data;
}4. 箭头函数深度解析
(1) 核心优势
// 传统函数
const list = [1, 2, 3].map(function (x) {
return x * 2;
});
// 箭头函数(更简洁)
const list = [1, 2, 3].map(x => x * 2);(2) 关键特性
| 特性 | 说明 |
|---|---|
| 自动返回单表达式结果 | (x) => x * 2 等价于 (x) => { return x * 2; } |
无单独this绑定 | 继承外层作用域的this(解决回调函数this问题) |
| 不可作为构造函数 | 不能使用new调用 |
无arguments对象 | 需用剩余参数替代:(...args) => console.log(args) |
5. 函数在ArkTS中的最佳实践
(1) 状态管理场景
@State counter: number = 0;
// 修改状态需用箭头函数保持this指向
const increment = () => {
this.counter += 1; // 正确访问组件this
}
Button("Add")
.onClick(increment) // 直接传递函数引用(2) 组件通信
// 父组件定义回调函数
@State message: string = "";
updateMessage = (newMsg: string) => {
this.message = newMsg;
}
// 子组件接收函数属性
@Component
struct Child {
@Link onUpdate: (msg: string) => void;
build() {
Button("Send").onClick(() => this.onUpdate("Hello!"))
}
}(3) 性能优化
// 使用useMemo缓存计算(避免重复渲染时重复计算)
const expensiveValue = useMemo(() => {
return calculateExpensiveValue(a, b);
}, [a, b]); // 依赖项变化时重新计算6. 函数类型与接口
// 定义函数类型
type Handler = (event: Event) => void;
// 实现函数
const scrollHandler: Handler = (event) => {
console.log(event.offset);
};
// 函数作为接口属性
interface ComponentProps {
onClick: () => void;
renderItem: (item: any) => JSX.Element;
}总结:ArkTS函数核心要点
- 参数灵活性:必选/可选/默认参数严格类型校验剩余参数处理不定长数据
- 返回值规范:明确声明返回类型(number/void/Promise)UI组件函数必须返回void
- 箭头函数优先:解决this指向问题简化回调函数写法单行表达式隐式返回
- 状态管理:状态修改函数建议使用箭头函数避免在render中创建新函数(使用useCallback优化)
- 类型安全:严格定义函数类型通过接口约束回调函数格式
特殊注意:在ArkTS中,所有组件内函数都需考虑HarmonyOS的UI渲染机制,避免在build()函数内直接修改状态,应通过事件触发状态变更。
©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS
标签
HarmonyOS
K老师
鸿蒙函数使用
暂无评论数据
发布
相关推荐
以技术破局,以生态赋能|IAM亮相鸿蒙智选峰会,X5Ultra引领智家健康新趋势
云上修代码
2171
0鸿蒙智选720智能空气净化器铂境Pro Max亮相鸿蒙峰会 以硬核科技定义智慧健康新标杆
快乐编译者
1168
0华为全场景亮相AWE 2026:华为鸿蒙智家 智慧全生态重塑未来家
2030
0华为鸿蒙智家技术升级,多款新品亮相AWE2026
老李的控制台
1202
0微信鸿蒙版 App 扫码登录手表端要求公布,手机系统需升级至 HarmonyOS 6.0.0.130 及以上版本
1361
0K老师
大家好我是K老师,这是我的个人介绍:鸿蒙先锋,鸿蒙开发者达人,鸿蒙应用架构师,HDG组织者,可0-1开发纯血鸿蒙应用,可0-1开发前端加鸿蒙混合应用,可0-1开发PC端鸿蒙应用。
118
帖子
0
提问
1412
粉丝
最新发布
[HarmonyOS][K老师]鸿蒙中主线程与子线程通信机制详解,Emitter,Worker,EventHandler和EventRunner。
2026-01-28 11:31:47 发布[HarmonyOS][K老师]鸿蒙大文件上传方案。
2026-01-28 10:30:53 发布热门推荐