鸿蒙学习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
相关推荐
不爱吃糖的程序媛15 小时前
从 0 到 1:react-native-transformer-text-input 鸿蒙化适配实录
react native·transformer·harmonyos
不爱吃糖的程序媛15 小时前
React Native 三方库鸿蒙适配实战:react-native-emoji-popup(Fabric 自定义组件)从 0 到 1
react native·harmonyos·fabric
贾伟康15 小时前
【口算王|19】HarmonyOS ArkTS 回归测试实战:覆盖启动、空数据、异常输入和重复点击
软件测试·harmonyos·arkts·回归测试·hypium
贾伟康15 小时前
【句匠|09】HarmonyOS ArkTS 学习统计实战:汇总正确率、连续学习和薄弱类型
harmonyos·arkts·appstorage·学习统计·本地统计
贾伟康15 小时前
【口算王|17】HarmonyOS ArkTS 亮暗色与视觉令牌实战:集中颜色、间距和交互状态避免页面割裂
harmonyos·arkts·arkui·深色模式·ui设计
搬砖的kk15 小时前
从 0 到 1:react-native-screenshot-aware 鸿蒙适配实战(RNOH 0.84)
react native·华为·harmonyos
贾伟康16 小时前
【口算王|15】HarmonyOS ArkTS 本地状态持久化实战:让保存、删除和页面返回后的数据即时一致
harmonyos·arkts·数据持久化·状态管理·preferences
贾伟康16 小时前
【口算王|18】HarmonyOS ArkTS 权限与隐私实战:让 module.json5、功能说明和拒绝路径一致
harmonyos·arkts·权限管理·隐私合规·module.json5
ChinaDragonDreamer16 小时前
HarmonyOS:6.0 新增和增强特性
harmonyos·鸿蒙
Georgewu16 小时前
【HarmonyOS AI】 通用文字识别详解
harmonyos