程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长嵌入式、鸿蒙、人工智能、Java等,专注于程序员成长那点儿事,希望在成长的路上有我相伴!君志所向,一往无前!


函数是什么

函数就像一个“菜谱”,告诉计算机要做什么事情。比如,你告诉计算机:“我要把两个数相加,然后返回结果”。

函数的作用:把一段代码封装起来,重复使用,避免重复写代码。

函数的语法格式

function 函数名(参数名:数据类型,……):返回值的数据类型{
    函数的实现;
    return 返回值;
}

一个函数通常有三个部分: 函数名(比如 加两个数) 参数(输入的“食材”) 返回值(输出的“成品”)

ArkTS 是强类型语言,参数和返回值都需要指定类型(比如 number、string)。

参数类型:告诉函数需要什么“食材”。

返回值类型:告诉函数最终会“输出什么”。

函数定义

四种常用的函数格式:

1.无参无返回值

2.无参有返回值

3.有参无返回值

4.有参有返回值

//1 无参无返回值
function f1(){

  console.log("你的幸运数字:"+(Math.floor(Math.random()*10)));

}
//2 有参无返回值
function f2(year:number){
  //判断 是否为润年
  //4年一润,百年不润,四百年在润
  if((year%4===0)&&((year%100!==0) && (year%400===0))){
    console.log(year+"年是闰年!");
  }else {
    console.log(year+"年是平年!");
  }
}
//3. 无参 有返回值
function f3():string{
  let n:number=Math.floor(Math.random()*4);
  let r:string='';
  switch (n){
    case 0:r="快餐";break;
    case 1:r="牛肉面";break;
    case 3:r="包子";break;
    default :r="肯德基";break;
  }
  return r;
}
//4 有参有返回值
function f4(name:string):string{

  return name+"中午应该吃:"+f3();

}

函数的调用

    //测试用例 演示函数
    it("t5",0,()=>{
      //1 无参无返回值
      f1();
      //2 有参无返回值
      f2(2025);
      // 3无参 有返回值
      console.log(f3());
      //4. 有参有返回值
      console.log(f4("胡杰"));
      // 封装函数  调用 验证数字是不是质数
      console.log("是否为质数:"+fzs(3))
      console.log("是否为质数:"+fzs(10))
    })

函数是代码复用的工具,就像菜谱一样,定义好后可以多次使用。

参数是输入,返回值是输出,类型要明确。

在鸿蒙开发中,函数常用于处理事件(如按钮点击)、计算数据或构建界面逻辑。

函数练习

实现一个函数,接受一个参数,验证该参数是否为质数

// 验证数字是否为质数
function fzs(num:number):boolean{
  //判断 num 是否为 质数(只能被1和他本身整除)
  //任何一个数字(除0以外)都可以被1和他本身整除
  //怎么判断一个数字是不是质数?就看他能不能被其他数字整除(1-他之间的数字)
  let r:boolean=true;
  if(num<=1){
    r=false;
  }else {
    for (let n = 2; n < num; n++) {
      if(num%n==0){
        //被其他整除,不是
        r=false;
        break;
      }
    }
  }
  return r;
}

参数特性

形式参数和实际参数

形参:形式参数

格式:参数名:数据类型

出现在函数的定义上

定义的函数的时候,使用的是形参

实参:实际参数 格式:变量名

出现在函数调用的时候

调用函数,传递的参数就叫实参(变量)

可选参数

定义与语法

  • 作用:允许函数在调用时省略某些参数,适用于非必填的场景。

  • 语法:在参数名后添加 ? 符号,表示该参数可缺省

示例:

//函数 使用可选参数 格式:参数名?:数据类型 必须为最后一个参数
function show(name?:string){
    console.log((name==undefined?"":name)+" is a good man!");
}
//调用的时候,可以传递,也可以不传递
show();
show("Tom");

1.可选参数,只能有1个,并且只能为最后一个参数 2.如果没有传递,默认为undefined

剩余参数

也叫可变参数,在函数内部作为数组使用

定义与语法

  • 作用:将不确定数量的参数收集为数组,适用于可变参数场景。

  • 语法:使用 ... 语法声明,类型必须为数组

示例:

//函数 使用 剩余参数(可变参数) 符号 ...参数名:数据类型[] 必须为最后一个参数
function show2(name:string,...hobbies:string[]){
    console.log(name+"的爱好有:"+hobbies);
}
//调用的时候,可以传递,也可以不传递
show2("Feri");
show2("Feri","play");
show2("Feri","play","eat");

1.必须为最后一个参数 2.必须为数组类型 3.调用的时候,可以不传、可以传1个,也可以传多个

箭头函数

是一种简洁函数写法,语法比普通函数更灵活,尤其适合短小的函数。

// 无参数
const func1 = () => { ... };

this 的绑定

这是箭头函数最显著的特点:没有自己的 this,继承自外层函数的 this。

普通函数:this 由调用方式决定(如 new、call、apply 等)。

箭头函数:this 始终指向函数定义时的外层作用域(词法作用域)。

在类或对象的方法中,若需要在回调函数中保持 this 指向当前对象,使用箭头函数可以避免 this 指向问题。

没有 arguments 对象

箭头函数不能直接访问 arguments 对象(普通函数的 arguments 是函数调用时的所有参数的类数组)。

解决方法:使用 剩余参数语法 ...args 替代。

箭头函数的适用场景

1.回调函数:

在数组方法(如 map、filter、reduce)中使用箭头函数,代码更简洁。

2.事件处理:

在 ArkUI中,确保 this 指向正确。

3.闭包:

箭头函数常用于闭包中,因为它们不会改变 this 的指向。

好啦,就写到这里啦

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐