当前位置: 首页 > news >正文

微搭低代码入门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 低代码中的函数总结 在用低代码开发软件的时候,除了我们上两节介绍的变量、条件语句外,还有一个重要的概念叫函数。函数是执行特定功能的代码片段&#xf…...

零基础Java第十六期:抽象类接口(二)

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

【css】html里面的图片宽度设为百分比,高度要与宽度一样

场景&#xff1a;展示图片列表的时候&#xff0c;原始图片宽高不一致。 外层div的宽度自适应&#xff0c;图片宽度不能固定数值&#xff0c;只能设置百分比。图片高度也不能设置固定数值。 如何让图片的高度与图片的宽度一样呢&#xff1f; html代码 &#xff1a; <div cl…...

前端三大组件之CSS,三大选择器,游戏网页仿写

回顾 full stack全栈 Web前端三大组件 结构(html) 样式(css) 动作/交互(js) --- 》 框架vue&#xff0c;安哥拉 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原文部分重点提取)

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

LeetCode【0036】有效的数独

本文目录 1 中文题目2 求解方法&#xff1a;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极验证&#xff0c;支持PJAX主题&#xff08;如Handsome&#xff09; 起因 最近垃圾评论比较多&#xff0c;为了防止一些机器人&#xff0c;我给博客添加了一些评论过滤机制&#xff0c;并为评论添加了验证码。 原本使用的插件是noisky/typecho…...

前端入门一之ES6--面向对象、够着函数和原型、继承、ES5新增方法、函数进阶、严格模式、高阶函数、闭包

前言 JS是前端三件套之一&#xff0c;也是核心&#xff0c;本人将会更新JS基础、JS对象、DOM、BOM、ES6等知识点&#xff0c;这篇是ES6;这篇文章是本人大一学习前端的笔记&#xff1b;欢迎点赞 收藏 关注&#xff0c;本人将会持续更新。 文章目录 JS高级 ES61、面向对象1.1…...

脑机接口、嵌入式 AI 、工业级 MR、空间视频和下一代 XR 浏览器丨RTE2024 空间计算和新硬件专场回顾

这一轮硬件创新由 AI 引爆&#xff0c;或许最大受益者仍是 AI&#xff0c;因为只有硬件才能为 AI 直接获取最真实世界的数据。 在人工智能与硬件融合的新时代&#xff0c;实时互动技术正迎来前所未有的创新浪潮。从嵌入式系统到混合现实&#xff0c;从空间视频到脑机接口&…...

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&#xff0c;如果能显示Java版本号&#xff0c;表示安装并…...

C语言 精选真题2

题目要求&#xff1a;将形参s所指向的字符串转换为整数并且返回 知识点&#xff1a; 将字符1转化为整数1 int fun(char *s) {int flag1,n0; if(*s-) //先根据第一个符号来判断是正负&#xff1b;然后读取第二位{flag-1;s; }else if(*s){s;}while(*s>0&&…...

Netty篇(WebSocket)

目录 一、简介 二、特点 三、websock应用场景 四、websocket案例 1. 服务端 2. 处理器 3. 页面端处理 五、参考文献 一、简介 没有其他技术能够像WebSocket一样提供真正的双向通信&#xff0c;许多web开发者仍然是依赖于ajax的长轮询来 实现。&#xff08;注&#xff…...

云原生-docker安装与基础操作

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

MySQL数据库:SQL语言入门 【上】(学习笔记)

SQL&#xff08;Structured Query Language&#xff09;是结构化查询语言的简称&#xff0c;它是一种数据库查询和程序设计语言&#xff0c;同时也是目前使用最广泛的关系型数据库操作语言。&#xff08;95%适用于所有关系型数据库&#xff09; 【 SQL是关系型数据库通用的操作…...

重学 Android 自定义 View 系列(六):环形进度条

目标 自定义一个环形进度条&#xff0c;可以自定义其最大值、当前进度、背景色、进度色&#xff0c;宽度等信息。 最终效果如下&#xff08;GIF展示纯色有点问题&#xff09;&#xff1a; 1. 结构分析 背景圆环&#xff1a;表示进度条的背景。进度圆环&#xff1a;表示当前…...

nodejs 020: React语法规则 props和state

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

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 然后就&…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...