js、vue、angular中的函数声明方式及特点

目录

一、原生 JavaScript 函数声明方式及特点

1. 函数声明式

2.函数表达式(匿名函数赋值给变量)

        语法:let functionName = function(param) {

        示例:

3.箭头函数(ES6引入)

 二、Vue 中的函数声明方式及特点(以组件内方法为例)

1、Vue2中函数声明: 

        1.1 方法定义在methods选项中

        1.2 计算属性(可以看作是一种特殊的函数)

2.vue3中函数声明

三、Angular 中的函数声明方式及特点(以组件内方法为例)


一、原生 JavaScript 函数声明方式及特点

1. 函数声明式

        语法:function functionName (param) {

                        // 函数体

                   }

        示例:

       function add(a, b) {return a + b;}

        特点:函数声明会被提升,这意味着可以在函数声明之前调用它。在编译阶段,JavaScript 引擎会先读取函数声明,并将其添加到执行环境中,使得函数在整个作用域内都可以被访问。这种方式使得代码结构更清晰,易于阅读和维护,适合定义一些具有明确功能的独立函数。

2.函数表达式(匿名函数赋值给变量)

        语法:let functionName = function(param) {

                        // 函数体

                   };

        示例:

       let subtract = function(a, b) {return a - b;};

        特点: 函数表达式不会被提升,必须在定义之后才能调用。这种方式更灵活,可以在运行时动态地创建函数,并且可以将函数作为参数传递给其他函数或者作为返回值返回。例如,在事件处理中经常使用函数表达式来定义回调函数。

3.箭头函数(ES6引入)

        语法:parameters) => { // 函数体 },如果只有一个参数可以省略括号,函数体只有一行代码时可以省略花括号并自动返回表达式的值。

        示例:

       let multiply = (a, b) => a * b;

        特点:箭头函数没有自己的this,它会继承外层函数的this值。这使得在处理对象方法和回调函数时,可以避免this指向的问题。箭头函数的语法简洁,适用于简单的函数操作,尤其是在函数作为参数传递或者在数组方法(如mapfilter等)中使用时非常方便。

 二、Vue 中的函数声明方式及特点(以组件内方法为例)

1、Vue2中函数声明: 

        1.1 方法定义在methods选项中

        语法:

       new Vue({el: '#app',data: {// 数据},methods: {functionName: function () {// 函数体}}});

        示例(简单的加法函数):

       new Vue({el: '#app',data: {num1: 1,num2: 2},methods: {add: function () {return this.num1 + this.num2;}}});

        特点:在 Vue 组件中,方法定义在methods选项内。这些方法可以通过this关键字访问组件的数据(data选项中的数据)。方法主要用于处理组件的业务逻辑,如响应用户交互(点击按钮、输入框输入等)、数据计算等。Vue 会自动将这些方法绑定到组件实例上,并且在模板中可以通过@(缩写)或v - on指令来调用这些方法,如<button @click="add">加法</button>。这种方式使得视图和逻辑分离,提高了代码的可维护性。

        1.2 计算属性(可以看作是一种特殊的函数)

        语法:

  data: {// 数据},computed: {computedPropertyName: function () {// 函数体,通常是根据data中的数据进行计算return // 计算结果}}

        示例(计算两个数的乘积)

data: {num1: 3,num2: 4},computed: {product: function () {return this.num1 * this.num2;}}

        特点:计算属性是基于响应式数据的缓存函数。它会根据其依赖的数据(data中的数据或者其他计算属性)自动缓存计算结果。只有当依赖的数据发生变化时,才会重新计算。这使得在模板中多次使用计算属性时,性能更好,因为不需要每次都重新计算。在模板中,可以像使用普通数据一样使用计算属性,如{{ product }}。

2.vue3中函数声明

        在 Vue 3 的组合式 API 中,函数通常在一个单独的函数中定义,然后通过setup函数返回给组件使用。

        语法:

     import { defineComponent, ref } from 'vue';export default defineComponent({setup() {// 定义响应式数据const count = ref(0);// 定义函数const increment = () => {count.value++;};return {count,increment};}});

        特点:组合式 API 使得代码更加模块化和可维护,函数可以更好地组织和复用。在这个例子中,increment函数可以直接修改响应式数据count。并且,组合式 API 可以更好地与 TypeScript 结合,提高类型安全性。 

三、Angular 中的函数声明方式及特点(以组件内方法为例)

        在组件类中定义方法

        语法:

       import { Component } from '@angular/core';@Component({selector: 'app - my - component',templateUrl: './my - component.component.html',styleUrls: ['./my - component.component.css']})export class MyComponent {functionName() {// 函数体}}

        示例(简单的日志输出函数):

       import { Component } from '@angular/core';@Component({selector: 'app - my - component',templateUrl: './my - component.component.html',styleUrls: ['./my - component.component.css']})export class MyComponent {logMessage() {console.log('这是一个Angular组件方法');}}

        特点:在 Angular 组件中,函数作为组件类的方法来定义。这些方法可以通过组件模板中的事件绑定(如(click)等)来调用,也可以在组件的其他方法中调用。Angular 是基于 TypeScript 开发的,函数的参数和返回值可以明确指定类型,这增强了代码的可读性和可维护性。并且,Angular 的依赖注入机制使得组件可以方便地获取和使用服务中的方法,将业务逻辑和组件逻辑分离,提高代码的可复用性。例如,可以在组件的构造函数中注入一个服务,然后在组件方法中调用服务的方法来获取数据或者执行其他操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/462270.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ctfshow文件包含web78~81

目录 web78 方法一&#xff1a;filter伪协议 方法二&#xff1a;input协议 方法三&#xff1a;data协议 web79 方法一:input协议 方法二&#xff1a;data协议 web80 方法一&#xff1a;input协议 方法二&#xff1a;日志包含getshell web81 web78 if(isset($_GET[file]…

电能表预付费系统-标准传输规范(STS)(30)

6.5.3.2 CONTROLBlock construction The 1 6 digit CONTROLBlock is constructed from the data elements in the APDU as defined in Table 36 and Table 37.The most significant digit is in position 1 5 and the least significant digit in position 0. APDU中的数据元素…

基于YOLO11/v10/v8/v5深度学习的维修工具检测识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

人工智能基础-opencv-图像处理篇

一.图像预处理 图像翻转 cv2.flip 是 OpenCV 库中的一个函数&#xff0c;用于翻转图像。翻转可以是水平翻转、垂直翻转或同时水平和垂直翻转。这个函数接受两个参数&#xff1a;要翻转的图像和一个指定翻转类型的标志。 img cv2.imread(../images/car2.png) #翻转 0&#xf…

Hive学习笔记

1 Hive基本概念 1.1 Hive定义 Hive&#xff1a;由 Facebook 开源用于解决海量结构化日志的数据统计工具。 Hive 是基于 Hadoop 的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张表&#xff0c;并 提供类 SQL 查询功能。 利用MapReduce去查询数据文件中的某些内…

用图说明 CPU、MCU、MPU、SoC 的区别

CPU CPU 负责执行构成计算机程序的指令&#xff0c;执行这些指令所指定的算术、逻辑、控制和输入/输出&#xff08;I/O&#xff09;操作。 MCU (microcontroller unit) 不同的 MCU 架构如下&#xff0c;注意这里的 MPU 表示 memory protection unit MPU (microprocessor un…

HTML 语法规范——代码注释、缩进与格式、标签与属性、字符编码等

文章目录 一、代码注释1.1 使用注释的主要目的1.2 使用建议二、标签的使用2.1 开始标签和结束标签2.2 自闭合标签2.3 标签的嵌套2.4 标签的有效性三、属性四、缩进与格式4.1 一致的缩进4.2 元素单独占用一行4.3 嵌套元素的缩进4.4 避免冗长的行五、字符编码六、小结在开发 HTML…

虚拟现实与增强现实:重塑娱乐和教育的边界!

内容概要 在这个瞬息万变的时代&#xff0c;虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;正如两位魔法师&#xff0c;腾云驾雾间掀起了一场教育与娱乐的革命。虚拟现实带我们飞跃平凡&#xff0c;进入一个充满奇迹的数字宇宙&#xff0c;仿佛我们…

中仕公考:上海市25年公务员考试今日报名

2025年上海市公务员考试于今日开始报名 考试报名采取网络报名方式进行&#xff0c;报考者可在2024年11月2日0:00至11月8日12:00期间登录专题网站进行报名。 年龄在18周岁以上&#xff0c;35周岁以下(1988年11月至2006年11月期间出生)&#xff0c;应届硕士、博士研究生报考的&…

Diving into the STM32 HAL-----HAL_GPIO

1、怎么看待外设&#xff1a; 从总线连接的角度看&#xff0c;外设和Core、DMA通过总线交换数据&#xff0c;正所谓要想富先修路。要注意&#xff0c;这些总线中的每一个都连接到不同的时钟源&#xff0c;这些时钟源决定了连接到该总线的外设操作的最大速度。 从内存分配的角度…

【表格解决问题】EXCEL行数过多,WPS如何按逐行分别打印多个纸张中

1 问题描述 如图&#xff1a;我的表格行数太多了。打印在一张纸上有点不太好看 2 解决方式 Step01&#xff1a;先选中你需要打印的部分&#xff0c;找到【页面】->【打印区域】->【设置打印区域】 Step02&#xff1a;先选中一行&#xff0c;找到【插入分页符】 Step0…

提升安全上网体验:Windows 11 启用 DOH(阿里公共DNS)

文章目录 阿里公共 DNS 介绍免费开通云解析 DNS 服务Windows 编辑 DNS 设置配置 IPv4配置 IPv6 路由器配置 DNS 阿里公共 DNS 介绍 https://alidns.com/ 免费开通云解析 DNS 服务 https://dnsnext.console.aliyun.com/pubDNS 开通服务后&#xff0c;获取 DOH 模板&#xff0…

如何在Linux下部署自己的ZFile开源网盘

ZFile 项目介绍 ZFile是一个功能强大、灵活的开源网盘系统&#xff0c;为用户提供安全便捷的文件存储和共享方案。 项目概述 ZFile由ZFile, Inc.开发和维护&#xff0c;基于Docusaurus构建。其用户友好的界面支持多种文件存储和共享功能&#xff0c;并具备高度的可定制性和扩…

Spring AI : 让ChatGPT成为你构建应用的核心亮点

本文是一篇介绍spring ai的文章&#xff0c;主要介绍了生成文本内容&#xff0c;以及读取图片中内容两个能力。 之所以介绍这两个能力&#xff0c;是因为 大模型目前最适合做的事情有两个&#xff1a; 1&#xff09; 非结构化数据的结构化&#xff08;图片转文字&#xff0c;…

Windows 命令提示符(cmd)中输入 mysql 并收到错误消息“MySQL不是内部或外部命令,也不是可运行的程序或批处理文件?

目录 背景: 过程&#xff1a; 1.找到MySQL安装的路径 2.编辑环境变量 3.打开cmd&#xff0c;输入mysql --version测试成功 总结: 背景: 很早之前安装了Mysql数据库&#xff0c;想查询一下当前安装的MySQL客户端的版本号&#xff0c;我在命令行界面输入mysql --verion命令回…

履带式排爆演习训练机器人技术详解

履带式排爆演习训练机器人是现代反恐、救援及危险环境处理领域中的重要工具。它们结合了先进的机械设计、智能感知、精确控制及高效算法&#xff0c;能够在复杂、危险的环境中执行排爆、侦察、取样等多种高风险任务&#xff0c;极大地保障了人员安全。 技术特点 1. 卓越的地面…

基于SSM医院门诊互联电子病历管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;医生管理&#xff0c;项目分类管理&#xff0c;项目信息管理&#xff0c;预约信息管理&#xff0c;检查信息管理&#xff0c;系统管理 用户账号功能包括&#xff1a;系统首页&…

PVE定时开启关闭虚拟机,实现PVE中群晖虚拟机的定时开机和关闭

如果在PVE中安装了群晖&#xff0c;又不想每天关闭PVE(不在家&#xff0c;怕服务器起不来)&#xff0c;因此想每天定时关闭开启黑群晖和其他虚拟机释放资源。 在网上查了很多&#xff0c;说在crontab添加命令 00 2 * * * pvesh create /nodes/pve/qemu/102/status/stop 00 6 …

【数据结构】宜宾大学-计院-实验六

实验 6 栈和队列&#xff08;综合实验&#xff09; 实验目的&#xff1a;实验内容&#xff1a;进制转换问题&#xff1a;第1题测试结果&#xff1a;第1题代码实现&#xff1a; 括号匹配问题&#xff1a;第2题测试结果&#xff1a;第2题代码实现&#xff1a; 回文字符串问题&…

java并发编程-CAS详解

一定要看这个链接的视频&#xff0c;讲解十分清楚&#xff01;&#xff01;&#xff01; 【【Java并发】面试官问我CAS、乐观锁、悲观锁&#xff0c;我反手就是骑脸输出】 https://www.bilibili.com/video/BV1ff4y1q7we/?share_sourcecopy_web&vd_sourceafbacdc02063c57e7…