鸿蒙学习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
相关推荐
咸鱼过江12 分钟前
openharmony中HDF驱动框架源码梳理-驱动加载流程
harmonyos·hdf框架
Landy_Jay6 小时前
HarmonyOS:应用文件概述(通俗易懂解释版)
华为·harmonyos
轻口味6 小时前
【每日学点HarmonyOS Next知识】Web跨域资源、Web长按菜单、Web拦截请求、禁止录屏、Base64图片宽高
华为·harmonyos·harmonyosnext
SuperHeroWu76 小时前
【HarmonyOS Next】鸿蒙应用加载SVG文件显示图标
华为·svg·harmonyos·鸿蒙·加载·image·图标
SuperHeroWu710 小时前
【HarmonyOS Next】鸿蒙加固方案调研和分析
华为·harmonyos·加密·应用安全·应用加固
东林知识库10 小时前
鸿蒙NEXT开发-自定义相机拍照
华为·harmonyos
青春路上的小蜜蜂10 小时前
鸿蒙——实操开发自定义Hivigor插件并发布插件
typescript·harmonyos·plugin·hvigor·自定义插件
H.ZWei12 小时前
鸿蒙应用开发—数据持久化之SQLite
数据库·华为·sqlite·harmonyos
别说我什么都不会13 小时前
鸿蒙(HarmonyOS)性能优化实战-启动分析工具Launch Profiler
性能优化·harmonyos
SuperHeroWu713 小时前
【HarmonyOS Next】鸿蒙应用弹框和提示气泡详解(一)
dialog·华为·harmonyos·toast·气泡·自定义弹框