鸿蒙学习ArkTS之基本语法<函数>

1.函数

函数中定义的变量和其他实例仅可以在函数内部访问,不能从外部访问.

如果函数中定义的变量与外部作用域中已有实例同名,则函数内的局部变量定义将覆盖外部定义。

1.1 普通函数:将两个字符串拼接并返回
typescript 复制代码
function add(x: string, y: string): string {
    let z: string = `${x} ${y}`;
    return z;
}
1.2带可选参数的函数

参数 name 为可选参数,如果未传入该参数,输出 'Hello!' 如果传入了该参数,输出包含该参数的问候语

javascript 复制代码
function hello(name?: string) {
   if (name === undefined) {
       console.log('Hello!');
   } else {
       console.log(`Hello, ${name}!`);
   }
}
1.3可选参数加默认值的函数

参数 coeff 有默认值 2,如果调用时不传入该参数,将使用默认值进行计算

typescript 复制代码
function multiply(n: number, coeff: number = 2): number {
    return n * coeff;
}
1.4 动态参数函数

使用 ...numbers 接收任意数量的数字参数,并返回它们的总和

ini 复制代码
function sum(...numbers: number[]): number {
    let res = 0;
    for (let n of numbers) {
        res += n;
    }
    return res;
}
1.5 闭包函数

闭包函数: 声明在一个函数中的函数,叫做闭包函数。

闭包: 内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。

scss 复制代码
function outerFn(){
  var i = 0; 
  function innerFn(){
      i++;
      console.log(i);
  }
  return innerFn;
}
var inner = outerFn();  //每次外部函数执行的时候,都会开辟一块内存空间,外部函数的地址不同,都会重新创建一个新的地址
inner();
inner();
inner();
var inner2 = outerFn();
inner2();
inner2();
inner2();   //1 2 3 1 2 3
1.6 函数重载

我们可以通过编写重载,指定函数的不同调用方式。具体方法为,为同一个函数写入多个同名但签名不同的函数头,函数实现紧随其后。

typescript 复制代码
function foo(x: number): void;            /* 第一个函数定义 */
function foo(x: string): void;            /* 第二个函数定义 */
function foo(x: number | string): void {  /* 函数实现 */
}

foo(123);     //  OK,使用第一个定义
foo('aa'); // OK,使用第二个定义    
    
1.7 箭头函数(又名Lambda函数)
typescript 复制代码
 let sum = (x: number, y: number): number => {
  return x + y;
}   
1.8 函数做参数
scss 复制代码
 type trigFunc = (x: number) => number // 这是一个函数类型

function do_action(f: trigFunc) {
  f(3.141592653589); // 调用函数
}

do_action(Math.sin); // 将函数作为参数传入

总结

  • 函数结构
lua 复制代码
function 函数名 (参数名: 参数类型) : 返回类型 {

 参数实现
 
}
  • ?表示可选参数
c 复制代码
function hello(name?: string) { 
console.log('Hello!');
}
  • 箭头函数
typescript 复制代码
let sum = (x: number, y: number): number => { return x + y; }
  • 闭包 函数嵌套函数 内部函数能获取外部函数的变量 且改变变量后 变量变动保持=
matlab 复制代码
function outerFn(){ var i = 0; function innerFn(){ i++; console.log(i); } return innerFn; } var inner = outerFn(); //每次外部函数执行的时候,都会开辟一块内存空间,外部函数的地址不同,都会重新创建一个新的地址 inner(); inner(); inner(); var inner2 = outerFn(); inner2(); inner2(); inner2(); //1 2 3 1 2 3
相关推荐
bestadc12 小时前
鸿蒙 所有API缩略图鉴
harmonyos
马剑威(威哥爱编程)15 小时前
HarmonyOS 5.0 分布式数据协同与跨设备同步
分布式·华为·harmonyos·arkts·harmonyos-next
DONSEE广东东信智能读卡器21 小时前
鸿蒙系统使用ArkTS开发语言支持身份证阅读器、社保卡读卡器等调用二次开发SDK
二次开发·sdk·arkts·鸿蒙·身份证阅读器·社保卡读卡器
茄子忍者烧纸尿裤1 天前
鸿蒙开发——4.ArkTS快速入门指南
华为·harmonyos
_waylau1 天前
【HarmonyOS NEXT+AI】问答05:ArkTS和仓颉编程语言怎么选?
人工智能·华为·harmonyos·arkts·鸿蒙·仓颉
鸿蒙布道师2 天前
鸿蒙NEXT开发动画案例3
android·ios·华为·harmonyos·鸿蒙系统·arkui·huawei
雪芽蓝域zzs2 天前
HarmonyOS开发-组件市场
华为·harmonyos
__Benco2 天前
OpenHarmony平台驱动开发(十),MMC
人工智能·驱动开发·harmonyos
何玺2 天前
鸿蒙电脑:五年铸剑开新篇,国产操作系统新引擎
华为·电脑·harmonyos