鸿蒙学习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
相关推荐
晴殇i1 小时前
关于前端基础快速跨入鸿蒙HarmonyOS开发
前端·harmonyos
ChinaDragon2 小时前
HarmonyOS:弹出框控制器
harmonyos
金鸿客2 小时前
鸿蒙Text文本设置选中菜单和AI菜单
harmonyos
特立独行的猫a8 小时前
鸿蒙PC平台三方库移植实战:以libid3tag库为例(附完整移植流程)
华为·harmonyos·移植·鸿蒙pc·libid3tag
爱笑的眼睛1113 小时前
深入探讨HarmonyOS分布式剪贴板:技术原理与开发实践
华为·harmonyos
特立独行的猫a14 小时前
鸿蒙PC平台三方库移植实战:以libogg库移植为例(附完整移植流程与工具链配置)
华为·harmonyos·三方库移植·鸿蒙pc·libogg
爱笑的眼睛1114 小时前
深入理解HarmonyOS通知渠道与优先级设置:从基础到高级实践
华为·harmonyos
夏文强18 小时前
HarmonyOS开发者认证练习题-判断题
华为·harmonyos
Kisang.18 小时前
【HarmonyOS】ArkTS的多线程并发(下)——线程间通信对象的传递
华为·typescript·harmonyos·鸿蒙
柒儿吖1 天前
Qt for HarmonyOS 3D图片轮播组件开源鸿蒙开发实战
qt·3d·harmonyos