前端面试题12-22
12 Proxy是什么,有什么作用?
Proxy 是 ES6 (ECMAScript 2015) 引入的一种元编程特性。它允许你创建一个对象,该对象可以拦截和定义基本操作(例如属性查找、赋值、枚举、函数调用等)。Proxy 提供了一种机制,可以在对象的基本操作行为发生之前对这些操作进行自定义处理。
作用:
- 拦截并自定义操作:你可以在对象的基本操作(如获取属性、设置属性、删除属性等)发生时执行自定义的逻辑。例如,创建一个对象,能够记录所有被访问的属性或值。
- 数据验证:你可以在设置属性时进行数据验证,以确保数据符合预期。
- 日志记录和调试:通过拦截操作,可以记录对象的各种操作,用于调试和日志记录。
- 虚拟化:可以创建虚拟对象,这些对象并不包含数据本身,而是通过 Proxy 动态生成或从远程服务器获取数据。
13 Reflect是什么,有什么作用?
Reflect 是 ES6 新引入的一个内置对象,它提供了一些与对象操作相关的静态方法。Reflect 提供的方法与 Proxy 对象的方法一一对应,目的是使对象操作更加规范和一致。
作用:
- 统一方法:Reflect 提供的方法使得对象操作更加统一和标准化。
- 替代旧有方法:Reflect 提供的静态方法可以替代一些老方法,如
Object.defineProperty等。 - 与 Proxy 配合:Reflect 方法和 Proxy 的 handler 方法对应,可以更容易实现默认操作的重用。
- 返回布尔值:与直接操作对象不同,Reflect 方法通常返回布尔值来表示操作是否成功。
14 Promise是什么,有什么作用?
Promise 是 ES6 引入的一种异步编程模式,用于处理异步操作的结果。它代表了一个异步操作的最终完成(或失败),以及其结果值。
作用:
- 管理异步操作:通过链式调用
.then()和.catch()方法,处理异步操作的结果和错误。 - 避免回调地狱:通过 Promise,可以更清晰地组织异步代码,避免层层嵌套的回调函数。
- 同步化异步代码:Promise 提供了一种更接近同步代码的写法,使得代码逻辑更容易理解和维护。
- 错误处理:Promise 提供了更统一的错误处理机制,通过
.catch()方法集中处理错误。
15 Iterator是什么,有什么作用?
Iterator 是一种接口,为不同的数据结构提供了一种统一的访问机制。通过定义 next() 方法,Iterator 可以逐一访问集合中的每个元素。
作用:
- 遍历集合:提供一种统一的方式来遍历不同的数据结构,如数组、对象、Map、Set 等。
- 惰性求值:Iterator 可以通过
next()方法按需生成下一个元素,避免一次性加载所有元素,节省内存。 - 与 for…of 结合:Iterator 使得
for...of循环能够遍历任何实现了 Iterator 接口的对象。 - 自定义遍历逻辑:通过实现 Iterator 接口,可以自定义复杂的数据遍历逻辑。
16 for…in 和 for…of有什么区别?
for…in 和 for…of 都是 JavaScript 中用于遍历的语句,但它们有显著的区别:
- for…in:遍历对象的可枚举属性,包括继承的属性。适用于对象的属性遍历。
- for…of:遍历可迭代对象(如数组、Map、Set、字符串等)中的元素,直接获取值。适用于集合的元素遍历。
17 Generator函数是什么,有什么作用?
Generator 函数是 ES6 引入的一种异步编程方式,它允许你在函数执行过程中暂停和恢复。
作用:
- 控制流管理:通过
yield关键字,可以在函数执行过程中暂停和恢复执行,使得异步代码更接近同步代码的写法。 - 实现惰性求值:Generator 可以按需生成序列中的下一个值,而不是一次性生成所有值,节省内存。
- 协程:Generator 提供了一种实现协程的机制,可以在不同的 Generator 之间切换执行。
Generator 原理:
Generator 函数在执行时返回一个迭代器对象,该对象的 next() 方法被调用时,会执行函数直到遇到 yield 关键字,暂停执行并返回 yield 后的值。再次调用 next() 时,函数从暂停的位置继续执行。
Generator 实现:
function* myGenerator() {yield 1;yield 2;yield 3;
}const gen = myGenerator();
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // 3
18 async函数是什么,有什么作用?
async 函数是 ES2017 引入的一种异步编程模式,它使得异步代码的写法更接近于同步代码。
作用:
- 简化异步代码:async 函数可以使用
await关键字等待 Promise 的结果,使得异步代码更易读和维护。 - 错误处理:通过
try...catch语句,可以更统一地处理异步操作中的错误。 - 顺序执行:async 函数中的
await语句使得异步操作看起来像顺序执行,简化了代码逻辑。
19 Class、extends是什么,有什么作用?
Class 是 ES6 引入的一种定义类的语法糖,它使得面向对象编程更加直观和简洁。
作用:
- 定义类:提供了一种定义类和类方法的简洁语法。
- 继承:通过
extends关键字,类可以继承另一个类,实现代码复用和扩展。
class Animal {constructor(name) {this.name = name;}speak() {console.log(`${this.name} makes a noise.`);}
}class Dog extends Animal {speak() {console.log(`${this.name} barks.`);}
}const dog = new Dog('Rex');
dog.speak(); // Rex barks.
20 module、export、import是什么,有什么作用?
Module 是 ES6 引入的一个模块化机制,允许你将代码分割成独立的模块。
作用:
- 模块化代码:将代码分割成独立的模块,提高代码的可维护性和重用性。
- 导入导出:通过
export关键字导出模块,通过import关键字导入模块,实现模块之间的依赖管理。 - 避免全局污染:模块化机制可以避免变量和函数在全局作用域中的污染。
// math.js
export function add(a, b) {return a + b;
}// main.js
import { add } from './math.js';
console.log(add(2, 3)); // 5
21 日常前端代码开发中,有哪些值得用ES6去改进的编程优化或者规范?
- 使用箭头函数:简化函数表达式,避免
this关键字的困扰。 - 使用模板字符串:替代字符串拼接,增强代码可读性。
- 使用
let和const:替代var声明变量,提升作用域控制和代码稳定性。 - 解构赋值:简化对象和数组的赋值操作。
- 默认参数:简化函数参数的默认值设置。
- 模块化:使用
import和export管理模块依赖。 - 使用 Promise:替代回调函数处理异步操作。
- 使用类:面向对象编程更加直观。
22 ES6的了解
ES6(ECMAScript 2015)是 JavaScript 的重要版本,引入了许多新特性和语法,提升了语言的功能和可用性。ES6 的主要特性包括箭头函数、类、模板字符串、解构赋值、默认参数、Promise、模块化、Generator 函数、async 函数、Proxy 和 Reflect 等。这些特性不仅简化了代码的编写和维护,还为开发者提供了更多的编程范式和工具。了解和掌握 ES6 的特性是现代 JavaScript 开发的必备技能。
相关文章:
前端面试题12-22
12 Proxy是什么,有什么作用? Proxy 是 ES6 (ECMAScript 2015) 引入的一种元编程特性。它允许你创建一个对象,该对象可以拦截和定义基本操作(例如属性查找、赋值、枚举、函数调用等)。Proxy 提供了一种机制,…...
【论文解读】Performance of AV1 Real-Time Mode
论文下载地址:Performance of AV1 Real-Time Mode 时间:2020.10 级别:IEEE 作者:Ludovic Roux 摘要 背景:COVID-19疫情增加了对数字互动的需求,使得实时或低延迟编解码器变得更加重要。现状:大多数编解码器,包括AV1,主要关注于编码效率,这是视频点播(VOD)的主要改…...
java处理中文脱敏
方法一,简单的,不计算文字长度去设置脱敏 public static String dataDesensitization1(String content){String regex "(.{2}).*(.{2})";return ReUtil.replaceAll(content, regex, matcher -> {try {if (CharSequenceUtil.isBlank(match…...
【Linux网络】端口及UDP协议
文章目录 1.再看四层2.端口号2.1引入linux端口号和进程pid的区别端口号是如何生成的传输层有了pid还设置端口号端口号划分 2.2问题2.3netstat 3.UDP协议3.0每学一个协议 都要讨论一下问题3.1UDP协议3.2谈udp/tcp实际上是在讨论什么? 1.再看四层 2.端口号 端口号(Po…...
Unity 生成模版代码
1、创建模版代码文本 using System.Collections; using System.Collections.Generic; using UnityEngine;public class ClassNameScritpItem : MonoBehaviour {public GameObject go;// Start is called before the first frame updatevoid Start(){go new GameObject();}// …...
【ai】chatgpt的plugin已经废弃
发现找不到按钮,原来是要申请: https://openai.com/index/chatgpt-plugins/ 发现申请已经跳转了,好像是废弃了? 不接受新插件了,但是openai的api 是可以继续用的。 https://openai.com/waitlist/plugins/We are no longer accepting new Plugins, builders can now create…...
2024年03月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 运行如下代码,若输入整数3,则最终输出的结果为?( ) def f(x):if x==1:s=1else:s...
多旋翼无人机机场考哪些内容?
多旋翼无人机机场考试的内容主要包括理论和实飞两部分。 理论考试主要涵盖无人机相关的知识,包括无人机的原理、结构、操作规范等。 实飞考试则主要考察飞行技能,包括飞行操作、航线规划、飞行稳定性等。 具体来说,实飞部分可能包括使用GPS…...
【前端每日基础】day23——箭头函数
箭头函数是ES6(ECMAScript 2015)引入的一种新的函数表达式语法。相比传统函数,箭头函数有简洁的语法,并且不绑定自己的this、arguments、super或new.target。以下是详细介绍箭头函数的各个方面: 基本语法 单参数箭头函…...
27.Java中单例模式的实现方式
一、单例模式 单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。 单例模式中: 这个类只能有一个实例这个类必须自己创建自己的唯一实例这个类必须…...
C#面:当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法?
一个线程在访问一个对象的一个synchronized方法时: 另一个线程可以同时访问这个对象的非同步方法。另一个线程不可以同时访问这个对象的普通同步方法。另一个线程可以同时访问这个对象的静态同步方法 ,即static synchronized修饰的方法 。另一个线程不可…...
express框架下后端获取req.body报错undefined
express框架下后端获取req.body报错undefined_express服务器post中data为undefine-CSDN博客 /*** 特殊说明:Express是一个单线程服务器器程序【必须存在指定的顺序调用,否则无法达到预期的效果】*//*** 第一步:创建一个Express实例对象,并且在匹配路由之…...
Element plus 低版本弹窗组件添加拖拽功能
在使用element plus 弹窗组件el-dialog 的时候,由于自己组件库版本过低,所以就会缺失某些功能,比如弹窗组件的可拖拽功能。因为某些原因element plus 组件库又不能升级,所以此时就需要自己为弹窗组件添加拖拽功能。共分为一下四个…...
计算机组成原理易混淆知识点总结(持续更新)
目录 1.机器字长,存储字长与指令字长 2.指令周期,机器周期,时钟周期 3.CPI,IPS,MIPS 4.翻译程序和汇编程序 5.计算机体系结构和计算机组成的区别和联系 6.基准程序执行得越快说明机器的性能越好吗? 1.机器字长,存储字长与指令字长 不同的机器三者…...
【STM32踩坑】HAL固件库版本过高导致烧录后无法运行问题
问题引入 目前STM32CUBEMX已经更新到了6.11版本,对应的固件库也一直在更新; 以STM32F1库为例,目前最新的库对应版本为1.8.5 但是我们会发现,如果直接使用1.8.5版本的固件库生成HAL源码后,烧录是可以烧录,但…...
芯片丝印反查
芯片丝印反查网 - IC芯片丝印,IC芯片代码,IC芯片印字,IC芯片顶标,SMD code,marking code,top mark芯查查-电子信息产业数据引擎 ic/芯片丝印反查网-芯查查...
C语言之指针详解(5)(含有易错笔试题)
文章目录 一、sizeof和strlen的对比1.1 sizeof1.2 strlen1.3 sizeof 和 strlen 的对比 二、数组和指针笔试题2.1 一维数组2.2 字符数组2.3 二维数组 三、指针运算笔试题3.1 题目13.2 题目23.3 题目33.4 题目43.5 题目53.6 题目63.7 题目7 一、sizeof和strlen的对比 有一个很神…...
discuzX2.5的使用心得 札记一
从开始接受php论坛的开发任务,对php感兴趣的我开始迷恋上discuz这个产品了, 像戴志康这样的创新人才,是我们这代人的骄傲和学习的榜样 应该是了解一下,啥事discuzX2.5,百度看一下 discuz x2.5_百度百科 看完百度词条…...
【Python】 探索Django框架的高并发处理能力
基本原理 Django是一个高级的Python Web框架,它鼓励快速开发和干净、实用的设计。Django遵循MVC(模型-视图-控制器)设计模式,提供了一个全栈式的解决方案,使得开发者能够快速构建功能丰富的Web应用。Django的高并发处…...
C-数据结构-平横二叉树
平衡二叉树(Balanced Binary Tree)是一种二叉树,其中任意节点的两棵子树的高度差不超过 1。也可以说是一棵空树或者左右子树高度差不超过 1 的二叉树。 特点和性质 高度平衡:平衡二叉树是一种高度平衡的二叉树,任意节…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
