[HarmonyOS][K老师]鸿蒙中函数的使用? 原创
头像 K老师 2026-01-01 15:35:06    发布
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函数核心要点

  1. 参数灵活性:必选/可选/默认参数严格类型校验剩余参数处理不定长数据
  2. 返回值规范:明确声明返回类型(number/void/Promise)UI组件函数必须返回void
  3. 箭头函数优先:解决this指向问题简化回调函数写法单行表达式隐式返回
  4. 状态管理:状态修改函数建议使用箭头函数避免在render中创建新函数(使用useCallback优化)
  5. 类型安全:严格定义函数类型通过接口约束回调函数格式
特殊注意:在ArkTS中,所有组件内函数都需考虑HarmonyOS的UI渲染机制,避免在build()函数内直接修改状态,应通过事件触发状态变更。
©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS

暂无评论数据

发布

头像

K老师

大家好我是K老师,这是我的个人介绍:鸿蒙先锋,鸿蒙开发者达人,鸿蒙应用架构师,HDG组织者,可0-1开发纯血鸿蒙应用,可0-1开发前端加鸿蒙混合应用,可0-1开发PC端鸿蒙应用。

118

帖子

0

提问

1412

粉丝

关注
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255