No114.精选前端面试题,享受每天的挑战和学习

news2024/10/7 16:25:34

在这里插入图片描述

文章目录

    • vue3中的ref、toRef、toRefs
    • 说明下TS的优缺点
    • 说下函数式组件
    • 说下函数式编程

vue3中的ref、toRef、toRefs

下面是对Vue 3中的reftoReftoRefs进行比较的表格:

reftoReftoRefs
参数类型值类型或引用类型响应式对象响应式对象
返回值Ref 对象Ref 对象响应式对象
关联性与源数据无关,创建新的响应式数据与源数据相关,返回源数据的响应式引用与源数据相关,返回源数据属性的响应式引用
使用场景创建和管理简单的响应式数据引用已有的响应式数据属性引用多个响应式数据属性
响应式性更新时自动触发视图更新更新时自动触发视图更新更新时自动触发视图更新

ref:

  • ref用于创建一个响应式引用(Ref对象),可用于包装并访问任何值(可以是基本类型、对象或数组)。
  • 它返回一个具有.value属性的Ref对象,可以通过.value访问和修改被包装的值。
  • 当被包装的值发生变化时,Vue会自动追踪变化并触发视图的重新渲染。

toRef:

  • toRef用于创建一个指向响应式对象的响应式引用。
  • 它接收一个响应式对象和一个属性名作为参数,返回一个指向该响应式对象属性的响应式引用。
  • 当指定的响应式对象的属性值发生变化时,引用的值也会相应地更新。

toRefs:

  • toRefs用于接收一个响应式对象作为参数,并将其每个属性转换为一个独立的响应式引用。
  • 它返回一个对象,该对象包含了原始响应式对象的每个属性的响应式引用。
  • 当原始响应式对象的属性值发生变化时,对应的响应式引用的值也会相应地更新。

需要注意的是,toReftoRefs都与源数据相关,它们可以在以后的更新中自动更新关联的响应式引用。而ref创建的是一个新的响应式数据,与源数据无直接关联。因此,在选择使用它们时,请根据具体的需求和场景进行选择。

在这里插入图片描述

说明下TS的优缺点

TypeScript(TS)是一种由微软开发的开源编程语言,它是JavaScript的一个超集,通过添加静态类型和其他语言特性来增强JavaScript。下面是TypeScript的优点和缺点的说明:

优点:

  1. 强类型检查:TypeScript引入了静态类型系统,可以在编译时捕获许多常见的错误和潜在的问题。这可以帮助开发人员在编码阶段就发现并解决类型相关的错误,减少运行时错误和调试时间。

  2. 更好的代码维护性:通过明确声明变量类型和函数参数类型,以及使用接口和类等面向对象的概念,TypeScript使得代码更加可读、可理解和可维护。增强的IDE支持还可以提供代码补全、参数提示和类型检查等功能,提高开发效率。

  3. 更好的开发工具支持TypeScript提供了丰富的开发工具支持,如智能代码补全、导航和重构等功能。这些工具可以帮助开发人员更轻松地开发、调试和重构代码。

  4. 渐进式采用TypeScript是JavaScript的超集,这意味着现有的JavaScript代码可以逐步迁移到TypeScript,无需进行大规模的重写。可以通过为现有代码添加类型注解来逐渐引入类型检查,并在需要的地方使用其他高级特性。

  5. 生态系统和社区支持:TypeScript拥有庞大的开发者社区和生态系统,有大量的开源库和框架可供使用。很多流行的JavaScript库和框架也提供了针对TypeScript的类型声明文件,使得与这些库的集成更加方便。

缺点:

  1. 学习成本:相对于纯JavaScript而言,学习和掌握TypeScript需要额外的学习成本。开发人员需要熟悉TypeScript的类型系统、工具链和其他语言特性。尤其是对于初学者来说,上手可能会有一定的难度。

  2. 增加开发时间:在使用TypeScript时,需要花费更多的时间进行类型注解和声明,以及处理类型相关的错误。这可能会增加开发时间,并且在一些简单的项目或原型开发中,这种额外的开销可能并不划算。

  3. 项目配置和构建复杂度:与JavaScript相比,TypeScript在项目配置和构建方面可能需要更多的设置。需要配置tsconfig.json文件来指定编译选项,并将TypeScript代码转换为JavaScript。此外,将TypeScript与一些构建工具(如Webpack)集成也可能需要一些额外的配置和学习成本。

综上所述,TypeScript在提供更好的类型安全性和开发工具支持方面具有明显优势,但也存在学习成本较高和增加开发时间的缺点。在选择使用TypeScript时,需要在项目需求、团队技术能力和开发效率等方面进行权衡和考虑。

说下函数式组件

函数式组件是React中的一种组件形式,它是一个【纯函数】,接收props作为参数,并返回一个描述组件UI的React元素。函数式组件没有内部状态(state),也没有生命周期方法,因此它的设计更加简单和轻量。

函数式组件通常使用无状态函数(Stateless Function)编写,这意味着它不会保持组件的状态。它只负责接收props并返回渲染结果

使用函数式组件的好处是它们易于编写和测试,代码清晰易懂。函数式组件没有this关键字,使得在组件内部没有自身的上下文绑定(context binding),这可以避免一些错误和混淆。

函数式组件在React中的应用越来越广泛。在React 16.8版本之前,函数式组件只能表示无状态组件;然而,React Hooks的引入使得函数式组件也可以处理组件状态和生命周期方法,使得函数式组件可以替代类组件的使用,在开发中提供了更多的选择。

总结一下,函数式组件是一种简单、轻量的React组件形式,通常用于表示无状态的UI组件。通过使用无状态函数编写,函数式组件易于编写、测试和理解。

说下函数式编程

函数式编程(Functional Programming)是一种编程范式,它主要强调使用纯函数来构建程序。
在函数式编程中,函数被视为一等公民,具有以下特点:

  1. 纯函数(Pure Functions):纯函数是指给定相同的输入,总是返回相同的输出,并且没有副作用(Side Effects)。纯函数不会修改外部状态,也不会对外部状态产生影响。纯函数的结果仅依赖于输入参数,且输出结果不影响其他部分的代码执行。这种特性使得纯函数可预测、易于测试和并行处理。

  2. 不可变性(Immutability):在函数式编程中,数据被视为不可变的(Immutable)。一旦创建了一个数据,它就不能被修改,而是通过创建新的数据来表示变化。这样做的好处是可以提高代码的可靠性和可维护性,减少并发编程中的竞态条件。

  3. 函数组合(Function Composition):函数式编程鼓励将小的、可复用的函数组合成更大的、功能更强大的函数。通过将函数串联起来,可以实现更高级的功能,同时保持代码的简洁性和可读性。函数组合可以有效地提高代码的可维护性和可测试性。

  4. 高阶函数(Higher-Order Functions):高阶函数是指可以接受函数作为参数或返回一个函数的函数。这种特性允许我们将逻辑抽象为可重用的函数,提高代码的抽象程度和可扩展性。

  5. 延迟执行(Lazy Evaluation):函数式编程中的操作通常是延迟执行的,只有在需要结果的时候才会真正执行。这种方式可以提高性能,避免不必要的计算。

函数式编程广泛应用于各种编程语言和框架中,例如JavaScript、Python和Haskell等。它提供了一种不同的思考和解决问题的方式,可以使代码更具可读性、可维护性和可测试性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单认识Docker的资源控制

文章目录 一、CPU资源限制1.设置CPU使用率上限2.设置CPU资源占用比(设置多个容器才有效)3.设置容器与CPU绑核 二、内存资源限制三、对磁盘I/O配额的限制 一、CPU资源限制 1.设置CPU使用率上限 Linux通过CFS(Completely Fair Scheduler&#…

【简单认识Docker基本管理】

文章目录 一、Docker概述1、定义2.容器化流行的原因3.Docker和虚拟机的区别4.Docker核心概念 二、安装docker三、镜像管理1.搜索镜像2.下载(拉取)镜像3.查看已下载镜像4.查看镜像详细信息5.修改镜像标签6.删除镜像7.导出镜像文件和拉取本地镜像文件8.上传…

如何在Linux系统上搭建自己的FRP内网穿透

前言 我有一个1核1G的服务器有公网IP但是这个1核1G的服务器太垃圾了,几乎什么都跑不起来,不过网速还行,那我本地还有一个物理主机是一个4核4G的,那我就可以把这台主机安装上linux系统当成一个服务器来使用,然后把网络代理到公网IP上.使用内网穿透这篇文章也就出现了. FRP简介 F…

服务器CPU飚高排查

排查思路 当正在运行的Java服务导致服务器的CPU突然飙高时,我们该如何排查定位到哪个接口的哪行代码导致CPU飙高的问题呢?我主要提供两个方案: jstackarthas 准备工作 代码准备 现在需要准备一段可以让服务器CPU飙高的代码以及把代码部署…

鑫达惠购系统APP开发的功能架构介绍

鑫达惠购是一款新电商模式的购物分销系统,基于分销裂变的商业价值行为,快速地分享邀请用户注册。这个系统的模式有个特别的亮点,基于全网公排的模式快速推动用户在商城上的购买活动。 鑫达惠购客户端系统功能 包含的功能有:商城模…

memset の 那些事儿 (C++)

如果你在编程时开了一个数组 int a[100010] 这是后你想把他全部赋值为一个很大的值&#xff08;可能你用它来取min&#xff09; 这时候&#xff0c;应该这样写 for (int i 0; i < 100010; i ) a[i] 0x3f3f3f3f //0x3f3f3f3f 是一个比较接近int_max的一个数&#xff0…

机器学习笔记 - 使用VGG16深度学习模型进行图像相似度比较

一、简述 VGG16 是一个强大的预训练模型,可用于识别图像之间的相似性。通过使用该模型,我们可以从不同图像中提取高级特征并进行比较以识别相似性。该技术具有广泛的应用,从图像搜索和推荐系统到安全和监控。 在本文中,将利用该模型来查找两个图像之间的相似性。 …

Win11游戏高性能模式怎么开

1、点击桌面任务栏上的“开始”图标&#xff0c;在打开的应用中&#xff0c;点击“设置”&#xff1b; 2、“设置”窗口&#xff0c;左侧找到“游戏”选项&#xff0c;在右侧的选项中&#xff0c;找到并点击打开“游戏模式”&#xff1b; 3、打开的“游戏模式”中&#xff0c;找…

【汇编语言】栈及栈操作的实现

文章目录 栈结构栈操作栈的小结 栈结构 栈是一种只能在一端插入或删除的数据结构&#xff1b;栈有两个基本的操作&#xff1a;入栈和出栈&#xff1b; 入栈&#xff1a;将一个新的元素放到栈顶&#xff1b;出栈&#xff1a;从栈顶取出一个元素&#xff1b; 栈的操作规则&#…

单晶高温合金收获阶段性应用成果,科研人员已开展定向凝固实验

根据央视报道&#xff0c;中国科学院金属研究所的科研人员对从太空带回的铝硅合金样品进行了初步的解剖分析工作&#xff0c;并计划用不同的实验方法和合金材料继续开展相关实验工作&#xff0c;以进一步探索重力在单晶高温合金凝固过程中的具体作用及相关机理。 值得关注的是&…

ORB-SLAM2学习笔记9之图像帧Frame

先占坑&#xff0c;明天再完善… 文章目录 0 引言1 Frame类1.1 成员函数1.2 成员变量 2 Frame类的用途 0 引言 ORB-SLAM2学习笔记8详细了解了图像特征点提取和描述子的生成&#xff0c;本文在此基础上&#xff0c;继续学习ORB-SLAM2中的图像帧&#xff0c;也就是Frame类&#…

自我管理篇--工作做完了,我能不能到点就下班

以上简历模板资源的排版可能不是最优&#xff0c;但工作经历可以借鉴 工作做完了&#xff0c;我能不能到点就下班&#xff1f; 答案&#xff1a;是&#xff0c;每个人都是自由的 ​ 工作完了&#xff0c;我能不能准点下班&#xff0c;背后真正的问题是:你有没有找到那件让你愿意…

【算法——双指针】LeetCode 11 盛最多水的容器

题目描述&#xff1a; 解题思路&#xff1a; 如图所示&#xff1a; 1、我们考虑相距最远的两个柱子所能容纳水的面积。宽度是两根柱子之间的距离8&#xff1b;高度取决于两根柱子之间较短的那个&#xff0c;即左边柱子的高度3。水的面积就是3824。 2、如果选择固定一根柱子&…

【Linux】传输层协议:UDP和TCP

争做西格玛男人 文章目录 一、UDP协议1.端口号2.理解UDP报头3.UDP的特点&#xff08;面向数据报&#xff0c;全双工&#xff09; 二、TCP协议1.理解TCP报头某些TCP的策略1.1 TCP报头字段&#xff08;TCP的黏包问题&#xff09;1.2 网络协议栈和linux系统的联系&#xff08;以p…

SpringBoot + MyBatis-Plus构建树形结构的几种方式

1. 树形结构 树形结构&#xff0c;是指&#xff1a;数据元素之间的关系像一颗树的数据结构。由树根延伸出多个树杈 它具有以下特点&#xff1a; 每个节点都只有有限个子节点或无子节点&#xff1b;没有父节点的节点称为根节点&#xff1b;每一个非根节点有且只有一个父节点&a…

2023国赛数学建模A题思路模型代码汇总 高教社杯

本次比赛我们将会全程更新思路模型及代码&#xff0c;大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社…

econml介绍

EconML简介 EconML: A Python Package for ML-Based Heterogeneous Treatment Effects Estimation EconML是一个通过机器学习方法从观察数据中估计heterogeneous treatment effects的Python包。该软件包是微软研究院ALICE项目的一部分&#xff0c;目的是将最新的机器学习方法…

8.5.tensorRT高级(3)封装系列-基于生产者消费者实现的yolov5封装

目录 前言1. yolov5封装总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 tensorRT 高级-基于生产者消费者实现的yolov5封装…

日撸java_day63-65

文章目录 Booster代码运行截图 Booster 代码 package machineLearning.adaboosting;import weka.core.Instances;import java.io.FileReader; import java.util.Arrays;/*** ClassName: WeightedInstances* Package: machineLearning.adaboosting* Description:Weighted inst…

计算机提示mfc120u.dll缺失(找不到)怎么解决

在计算机领域&#xff0c;mfc120u.dll是一个重要的动态链接库文件。它包含了Microsoft Foundation Class (MFC) 库的特定版本&#xff0c;用于支持Windows操作系统中的应用程序开发。修复mfc120u.dll可能涉及到解决与该库相关的问题或错误。这可能包括程序崩溃、运行时错误或其…