微搭低代码入门03函数
目录
- 1 函数的定义与调用
- 2 参数与返回值
- 3 默认参数
- 4 将功能拆分成小函数
- 5 函数表达式
- 6 箭头函数
- 7 低代码中的函数
- 总结
在用低代码开发软件的时候,除了我们上两节介绍的变量、条件语句外,还有一个重要的概念叫函数。函数是执行特定功能的代码片段,比如我们在小程序中,如果点击提交按钮,往往希望将数据存入数据源中,那这个数据写入的过程我们就可以封装成一个函数。
我们本篇介绍函数的语法,示例,结合低代码中的自定义方法的编写深入理解函数的概念。
1 函数的定义与调用
语法:
使用function关键字进行定义。其基本语法如下:
function functionName(parameters) {// 函数体return something;
}
- functionName:函数名。
- parameters:函数的参数,可以有多个,用逗号分隔。
- functionBody:函数体,包含要执行的代码。
- return:返回语句,用于返回函数的结果。
调用
定义函数后,可以通过函数名加上一对圆括号(可以包含参数)来调用它:
functionName(arguments);
在调用的时候可以传入参数
2 参数与返回值
函数参数是函数定义时声明的变量,用于在函数体中接收传递的数据。
function add(a, b) {return a + b;
}
在这个例子中,add函数接受两个参数a和b,并返回它们的和。
函数可以通过return语句返回一个值。如果函数没有return语句,则默认返回undefined。
function greet(name) {return "Hello, " + name;
}
调用greet(“Alice”)将返回"Hello, Alice"。
3 默认参数
在ES6中,引入了默认参数的概念,允许在函数定义时为参数指定默认值。
function greet(name = "Guest") {return "Hello, " + name;
}
调用greet()将返回"Hello, Guest",而调用greet(“Alice”)将返回"Hello, Alice"。
4 将功能拆分成小函数
将一个大的任务拆分成小任务可以提高代码的可读性和可维护性。例如,将温度从摄氏度转换为华氏度的过程可以拆分成几个小函数:
function toCelsius(fahrenheit) {return (fahrenheit - 32) * 5 / 9;
}function toFahrenheit(celsius) {return celsius * 9 / 5 + 32;
}function convertTemperature(temp, from, to) {if (from === 'C' && to === 'F') {return toFahrenheit(temp);} else if (from === 'F' && to === 'C') {return toCelsius(temp);} else {throw new Error("Invalid conversion type");}
}let celsius = 25;
let fahrenheit = convertTemperature(celsius, 'C', 'F');
console.log(fahrenheit); // 输出:77
5 函数表达式
函数表达式允许我们将一个函数赋值给一个变量,这样函数就可以像其他变量一样被传递和使用。
let add = function(a, b) {return a + b;
};console.log(add(3, 4)); // 输出:7
6 箭头函数
ES6引入了箭头函数,提供了一种更简洁的函数定义方式。箭头函数没有自己的this,继承外层作用域的this值。
示例:
let add = (a, b) => {return a + b;
};console.log(add(3, 4)); // 输出:7
如果箭头函数的函数体只有一条语句,可以省略花括号和return关键字,这条语句的结果将自动返回。
let square = x => x * x;console.log(square(5)); // 输出:25
使用箭头函数对前面的示例进行重构:
let toCelsius = fahrenheit => (fahrenheit - 32) * 5 / 9;let toFahrenheit = celsius => celsius * 9 / 5 + 32;let convertTemperature = (temp, from, to) => {if (from === 'C' && to === 'F') {return toFahrenheit(temp);} else if (from === 'F' && to === 'C') {return toCelsius(temp);} else {throw new Error("Invalid conversion type");}
};let celsius = 25;
let fahrenheit = convertTemperature(celsius, 'C', 'F');
console.log(fahrenheit); // 输出:77
7 低代码中的函数
低代码对函数进行了可视化的封装,其实是借助es6的模块的概念进行了封装。比如我们在代码区可以创建两类方法,一种是页面生命周期的方法,一种是全局生命周期的方法。不同的生命周期标识方法的可见范围不同。我们将演示两类方法的使用。
先看第一类,页面生命周期的方法
export default function({event, data}) {// 函数体
}
这种语法是ES6模块导出语法的一种应用,它定义了一个默认导出的函数。这个函数接受一个对象作为参数,这个对象包含了event和data两个属性。event表示我们的事件对象,data表示在方法调用的时候传入的参数
比如我们在上边举了一个温度转换的函数,我们把他放入自定义方法中
function toCelsius(fahrenheit) {return (fahrenheit - 32) * 5 / 9;
}function toFahrenheit(celsius) {return celsius * 9 / 5 + 32;
}function convertTemperature(temp, from, to) {if (from === 'C' && to === 'F') {return toFahrenheit(temp);} else if (from === 'F' && to === 'C') {return toCelsius(temp);} else {throw new Error("Invalid conversion type");}
}
export default function ({ event, data }) {let celsius = 25;let fahrenheit = convertTemperature(celsius, 'C', 'F');console.log(fahrenheit); // 输出:77
}
创建一个按钮,调用我们的自定义方法
export default:这是ES6中用于导出模块成员的语法。当使用export default时,你可以导出一个函数、类、对象或任何其他类型的值。微搭这样写,通常我们是让代码更好管理,一个方法对应组件上的一个事件调用。
在{}里边写你具体的逻辑,如果需要将逻辑再封装成函数的,可以把你封装的function放在export上边。初学低代码的遇到这就开始乱写了,任意拼凑代码,为啥我看你的教程,我自己一写就报错呢?可不报错,连基础的语法都没有遵守。
第二种就是我们的全局方法,全局方法语法如下
export default function sayHi() {console.log('Hi LowCode')
}
全局比页面的多了一个方法的名字sayHi这个可以自己改,改成自己好认的名字。比如全局定义之后,一个是可以在组件里调用,还有就是可以在页面的方法里调用,调用的示例:
import sayHi from '../../common/sayHi'
export default function({event, data}) {let userName = '张三'console.log(userName)userName= '李四'console.log(userName)const age = 18console.log(age+1)console.log('您的姓名:'+userName)console.log(`您的姓名:${userName}`)console.log(typeof userName)sayHi(userName)}
模块被导出之后,可以使用import关键字导入,import后边的名字可以自己命名,在示例的最后一行代码我们就调用了导入的方法sayHi
总结
这一篇其实就是低代码开发必须需要弄明白的事情,如果不懂函数是干啥的,后边你在调用前后端API的时候往往一头雾水。前端是啥,后端又是啥,就会有种看代码一点都看不明白的感觉。
相关文章:

微搭低代码入门03函数
目录 1 函数的定义与调用2 参数与返回值3 默认参数4 将功能拆分成小函数5 函数表达式6 箭头函数7 低代码中的函数总结 在用低代码开发软件的时候,除了我们上两节介绍的变量、条件语句外,还有一个重要的概念叫函数。函数是执行特定功能的代码片段…...

零基础Java第十六期:抽象类接口(二)
目录 一、接口(补) 1.1. 数组对象排序 1.2. 克隆接口 1.3. 浅拷贝和深拷贝 1.4. 抽象类和接口的区别 一、接口(补) 1.1. 数组对象排序 我们在讲一维数组的时候,使用到冒泡排序来对数组里的元素进行从小到大或从大…...

【css】html里面的图片宽度设为百分比,高度要与宽度一样
场景:展示图片列表的时候,原始图片宽高不一致。 外层div的宽度自适应,图片宽度不能固定数值,只能设置百分比。图片高度也不能设置固定数值。 如何让图片的高度与图片的宽度一样呢? html代码 : <div cl…...

前端三大组件之CSS,三大选择器,游戏网页仿写
回顾 full stack全栈 Web前端三大组件 结构(html) 样式(css) 动作/交互(js) --- 》 框架vue,安哥拉 div 常用的标签 扩展标签 列表 ul/ol order——有序号 unordered——没序号的黑点 <!DOCTYPE html> <html><head><meta charset"…...
sqlsever 分布式存储查询
当数据存储在不同的服务器上的时候怎么取出来进行正常管连呢?比如你有 A 和B 两个服务器 里面存有两个表 分别是 A_TABLE、B_TABLE 其中 他们的关联关系是 ID 互相关联 1.创建链接服务器如果在B数据库要访问A数据库 那么 就在B数据库创建 -- 创建链接服务器 EXEC sp_addlink…...

deeponet(nature原文部分重点提取)
论文链接:Learning nonlinear operators via DeepONet based on the universal approximation theorem of operators | Nature Machine Intelligence 原文部分重点提取 DeepONets 会产生小的泛化误差 隐式类型算子还可以描述我们对其形式没有任何数学知识的系统 De…...

LeetCode【0036】有效的数独
本文目录 1 中文题目2 求解方法:python内置函数set2.1 方法思路2.2 Python代码2.3 复杂度分析 3 题目总结 1 中文题目 请根据以下规则判断一个 9 x 9 的数独是否有效。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线…...

Typecho登陆与评论添加Geetest极验证,支持PJAX主题(如Handsome)
Typecho登陆与评论添加Geetest极验证,支持PJAX主题(如Handsome) 起因 最近垃圾评论比较多,为了防止一些机器人,我给博客添加了一些评论过滤机制,并为评论添加了验证码。 原本使用的插件是noisky/typecho…...

前端入门一之ES6--面向对象、够着函数和原型、继承、ES5新增方法、函数进阶、严格模式、高阶函数、闭包
前言 JS是前端三件套之一,也是核心,本人将会更新JS基础、JS对象、DOM、BOM、ES6等知识点,这篇是ES6;这篇文章是本人大一学习前端的笔记;欢迎点赞 收藏 关注,本人将会持续更新。 文章目录 JS高级 ES61、面向对象1.1…...

脑机接口、嵌入式 AI 、工业级 MR、空间视频和下一代 XR 浏览器丨RTE2024 空间计算和新硬件专场回顾
这一轮硬件创新由 AI 引爆,或许最大受益者仍是 AI,因为只有硬件才能为 AI 直接获取最真实世界的数据。 在人工智能与硬件融合的新时代,实时互动技术正迎来前所未有的创新浪潮。从嵌入式系统到混合现实,从空间视频到脑机接口&…...
RoseTTAFold MSA_emb类解读
MSA_emb 类的作用是对多序列对齐(MSA)数据进行嵌入编码,同时添加位置编码和查询编码(调用PositionalEncoding 和 QueryEncoding)以便为序列特征建模类。 源代码: class MSA_emb(nn.Module):def __init__(self, d_model=64, d_msa=21, p_drop=0.1, max_len=5000):super(…...
2411C++,C++26反射示例
参考 namespace __impl {template<auto... vals>struct replicator_type {template<typename F>constexpr void operator>>(F body) const {(body.template operator()<vals>(), ...);}};template<auto... vals>replicator_type<vals...>…...

Ubuntu上搭建Flink Standalone集群
Ubuntu上搭建Flink Standalone集群 本文部分内容转自如下链接。 环境说明 ubuntu 22.06 先执行apt-get update更新环境 第1步 安装JDK 通过apt自动拉取 openjdk8 apt-get install openjdk-8-jdk执行java -version,如果能显示Java版本号,表示安装并…...
C语言 精选真题2
题目要求:将形参s所指向的字符串转换为整数并且返回 知识点: 将字符1转化为整数1 int fun(char *s) {int flag1,n0; if(*s-) //先根据第一个符号来判断是正负;然后读取第二位{flag-1;s; }else if(*s){s;}while(*s>0&&…...
Netty篇(WebSocket)
目录 一、简介 二、特点 三、websock应用场景 四、websocket案例 1. 服务端 2. 处理器 3. 页面端处理 五、参考文献 一、简介 没有其他技术能够像WebSocket一样提供真正的双向通信,许多web开发者仍然是依赖于ajax的长轮询来 实现。(注ÿ…...

云原生-docker安装与基础操作
一、云原生 Docker 介绍 Docker 在云原生中的优势 二、docker的安装 三、docker的基础命令 1. docker pull(拉取镜像) 2. docker images(查看本地镜像) 3. docker run(创建并启动容器) 4. docker ps…...

MySQL数据库:SQL语言入门 【上】(学习笔记)
SQL(Structured Query Language)是结构化查询语言的简称,它是一种数据库查询和程序设计语言,同时也是目前使用最广泛的关系型数据库操作语言。(95%适用于所有关系型数据库) 【 SQL是关系型数据库通用的操作…...

重学 Android 自定义 View 系列(六):环形进度条
目标 自定义一个环形进度条,可以自定义其最大值、当前进度、背景色、进度色,宽度等信息。 最终效果如下(GIF展示纯色有点问题): 1. 结构分析 背景圆环:表示进度条的背景。进度圆环:表示当前…...

nodejs 020: React语法规则 props和state
props和state 在 React 中,props 和 state 是管理数据流的两种核心机制。理解它们之间的区别和用途是构建 React 应用程序的基础。 一、props 和 state的区别 特性propsstate定义方式由父组件传递给子组件的数据组件内部管理的本地数据是否可修改不可变ÿ…...

STM32问题集
这里写目录标题 一、烧录1、 Can not connect to target!【ST-LINK烧录】 一、烧录 1、 Can not connect to target!【ST-LINK烧录】 烧录突然 If the target is in low power mode, please enable “Debug in Low Power mode” option from Target->settings menu 然后就&…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...