鸿蒙学习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
相关推荐
whysqwhw8 分钟前
鸿蒙AVSession Kit
harmonyos
whysqwhw2 小时前
鸿蒙各种生命周期
harmonyos
whysqwhw3 小时前
鸿蒙音频编码
harmonyos
whysqwhw3 小时前
鸿蒙音频解码
harmonyos
whysqwhw3 小时前
鸿蒙视频解码
harmonyos
whysqwhw3 小时前
鸿蒙视频编码
harmonyos
ajassi20003 小时前
开源 Arkts 鸿蒙应用 开发(十八)通讯--Ble低功耗蓝牙服务器
华为·开源·harmonyos
前端世界4 小时前
在鸿蒙应用中快速接入地图功能:从配置到实战案例全解析
华为·harmonyos
江拥羡橙6 小时前
【基础-判断】HarmonyOS提供了基础的应用加固安全能力,包括混淆、加密和代码签名能力
安全·华为·typescript·harmonyos
前端世界17 小时前
HarmonyOS 实战:用 @Observed + @ObjectLink 玩转多组件实时数据更新
华为·harmonyos