H5前端面试题汇总

article/2025/10/9 15:22:39

1.关于利用数组去重的方法,除了用最简单的set去重以外, 还有reduce,先来看一下reduce的基本使用吧

 那么问题来了, 如何用reduce来给类数组对象去重呢?

 2.promise是用来做什么的? 

promise是用来解决异步编程问题(简单说是就是解决回调地狱的),

promise有三种状态:   padding(等待状态) ,    resolve(成功状态) .    reject(失败状态)

如何用promise来实现同步操作?

这里大家记住promise 有一个语法糖, async  await   在promise中添加async, await就能实现同步操作

3.什么是原型链? 

当访问一个对象的某个属性时,会先在这个对象本身属性上查找, 如果没有找到,则会去它的__proto__隐式原型上查找, 即它的构造函数的prototype,如果还没有找到就会再再构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构,这就是原型链

4.闭包?

闭包,通俗的来说,就是在当前作用域能访问到外部作用域中的对象。实际上,闭包的存在是为了保护私有变量不被污染,形成不销毁的栈内存,里面的私有变量等信息保存下来。

5.watch和computed的区别?

computed是计算属性, 它是基于响应式依赖进行缓存的,如果依赖不变的话, 就会变成缓存, computed就不会重新计算

watch 是监听数据状态,只有在状态发生改变时才会触发(当有一些数据需要随着其他数据变动而变动时, 或者当需要在数据变化时执行异步或开销较大的操作时)

6.scoped的原理?(解决了组件之间样式的覆盖问题,当别的组件中需要用到这个组件里的样式的时候, 可以用/deep/穿透来)

会在当前组件的模板上添加一个data-v -xxx

后续配合属性选择器查找添加样式, 不会让样式污染,

让每个组件的样式不会互相冲突

lang="scss" 改变css样式的编译方式 换成scss语法 (可以进行嵌套使用)

/deep/ >>> 穿透, 可以让样式在别的vue文件中使用,

scoped看起来很美,但是,在很多项目中,会出现这么一种情况,即:引用了第三方组件,需要在组件中局部修改第三方组件的样式,而又不想去除scoped属性造成组件之间的样式污染。此时只能通过特殊的方式,穿透scoped。

7.SPA单页应用?与多页应用的区别?

SPA单页应用是由一个页面和多个组件片段组成的, 采用路由懒加载, 当需要的时候再加载页面, 

优点: 1.用户体验好, 2, 前后端分离 3. 后期维护方便4.专场动画容易实现5.页面局部刷新

缺点: 1.开发成本高2.不利于SEO搜索

8.vuex和localstorage . cookie的区别?

vuex是为了解决多组件之间的共享状态的一种状态管理模式, 强调集中式管理, 将所有的共享状态放在内存中, 读取速度快, 但是页面一刷新就恢复默认值了,

vuex的五大核心: state(存放数据的地方) , actions(发送异步请求) getters(类似于computed计算属性), mutations(更改状态的地方), modules(组件模块化) 

其中, 更改状态只能在mutations中,是同步请求, 通过commit来更改, 发送异步请求要在actions里面,组件通过dispath来触发    

vuex有四个辅助函数:   mapGetters. mapActions . mapMutations. mapState

localstorage是永久性存储, 存在本地中,只要不主动删除就会一直存在

cookie储存的信息比较少, 只有4KB 它有有效时间, 过期会自动删除

9.元素隐藏的区别?

visibility:hidden;隐藏占位                  display:none;隐藏不占位

10.axios的交互?

axios是一个基于Promise的HTTP库, 支持promise所有的API,支持请求/响应拦截器,

11.H5新增的特性?

1,标签: header. footer. active,nav, aside, 

2,画布: canvas 

3.audio, video

4. localstorage,   sessionstorage

5. 新的表单元素(tel.date,time,email,url)

12.CSS3新特性?

1.border-radius

2.box-shadow . text-shadow

3.transform: translate()  . scale(), skew() rotate()

4.动画:  @keyframs    animation()

5.媒体查询   @media

13.gulp和webpack的理解?

相同点: 都是自动化构建工具

不同点: gulp 是基于流的自动化构建工具, 通常以管道的方式,通过.pipe给下一个流程,强调工作流程

webpack是模块化打包工具, 可以借助它将模块化的资源转为一个或多个js文件, 强调模块化 all in module

14.谷歌和IE的兼容问题

1.表单的归类

ie下的表单元素在设置了disabled禁用属性之后,在ie下点击,仍然会有焦点。谷歌这是正常的没有焦点

解决方法:给表单元素设置增加属性 unselectable='on' 即可。

2.阻止冒泡事件

IE: e.cancelBubble = true

W3c: e.stopPropagation()

3.阻止默认行为

以a链接为例 点击会有默认跳转行为

W3c: e.preventDefault()

IE: returnValue = false

15.ES6新特性?

1. let const

let 表示申明变量。const 表示申明常量。

  • 常量定义了就不能改了。对象除外,因为对象指向的地址没变。
  • const在申明是必须被赋值。
  • 两者都为块级作用域。

块级作用域与函数作用域。任何一对花括号({和})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。函数作用域就好理解了,定义在函数中的参数和变量在函数外部是不可见的。

const a = 1
a = 0 //报错

2. 模块字符串``

可以使用反引号``来进行字符拼接。${}

3. 解构

可以使用{}来对数组和对象进行解构。

4. 函数的参数默认值

函数传参可以有默认值

// ES6;
function printText(text = 'default') {console.log(text);
}

5. Spread / Rest 操作符...

Spread / Rest 操作符指的是 ...,具体是 Spread 还是 Rest 需要看上下文语境。

  • 当被用于迭代器中时,它是一个 Spread 操作符:迭代器 (Iterator)是按照一定的顺序对一个或多个容 器 中的元素行进遍历的一种机制
function foo(x,y,z) {console.log(x,y,z);
}let arr = [1,2,3];
foo(...arr); // 1 2 3
  • 当被用于函数传参时,是一个 Rest 操作符:当被用于函数传参时,是一个 Rest 操作符:
function foo(...args) {console.log(args);
}
foo( 1, 2, 3, 4, 5); // [1, 2, 3, 4, 5]

6. 箭头函数

  • 不需要 function 关键字来创建函数
  • 省略 return 关键字
  • this始终指向函数申明时所在作用域下的this值
//es5
var fun = function() {}
//es6
var fn = () => {}

7. for of

  • for of遍历的是键值对中的值
  • for in遍历的是键值对中的键

8. class类

ES6 中支持 class 语法,不过,ES6的class不是新的对象继承模型,它只是原型链的语法糖表现形式。

class Student {constructor() {console.log("I'm a student.");}study() {console.log('study!');}static read() {console.log("Reading Now.");}
}console.log(typeof Student); // function
let stu = new Student(); // "I'm a student."
stu.study(); // "study!"
stu.read(); // "Reading Now."

9. 导入导出

  • 导入improt
  • 导出export default

10. promise

Promise 用于更优雅地处理异步请求。

  <script>new Promise((resolve,reject) => {setTimeout(function() {resolve('成功了!')},1000)// reject("失败了,wuwu")}).then(data => {console.log(data)}).catch(err => {console.log(err)})</script>

11. async/await

比promise更好的解决了回调地狱。

async function() {awiat fn()
}

12. Symbol

新的符号基本类型

13. Set集合

存储任何类型的唯一值,即集合中所保存的元素是不重复的。类数组结构。

arr = [1,2,3,1]
let arrNew = new Set(arr)
arrNew = [1,2,3]

类数组不是数组,要转化为数组Array.form(arrNew)这样arrNew才是数组了

16.数组常用的方法,以及Es6新增的数组方法?

数组方法(会不会改变原数组)_zhanggei的博客-CSDN博客_会改变原数组的数组方法 可以访问这个链接地址,里面有详细的讲解。

17.vue获取token的登录过程?

vue获取token登录的过程:
1,访问需要登录的页面的时候,利用路由守卫跳转,输入正确的用户名密码 向后台的认证接口发送数据
2,获取token 用vuex存储 ,且存储到localstorage中,关闭页面,下次重新访问可不用登陆,直接从localstorage取值,token过期时间由后台控制
3,axios 拦截 设置接下来的接口访问带着token;当token过期返回401跳转登陆重新获取token进行登录,

18.vue 生命周期
链接地址:vue的生命周期_zhanggei的博客-CSDN博客

19.v-for 和v-if的优先级问题?能不能一块用?

不能一块用, v-for的优先级要比v-if的高,一般真要用的话也不再一块写,可以父子结构上写,避免因为一块用引起的消耗高内存。

20.基本数据类型?

String .Number. Boolean.Undefined.Null.Object .

Object里面有Array。Function 

Es6新增的Symbol(符号类型)唯一性。


http://chatgpt.dhexx.cn/article/OY9hIq7q.shtml

相关文章

C语言中关于fscanf()方法与fgets()方法的简单知识点总结

fscanf() int fscanf(FILE* stream, const char* format, [argument...]);fscanf()方法与scanf()方法类似。不同的是多了第一个参数&#xff0c;文件指针参数&#xff0c;后两个参数用法类似。其中要注意的是第三个参数处填写变量时&#xff0c;不要遗漏取地址符&。 要点…

C语言快速进阶C++(基本篇+STL篇)

目录 前言 用C做题的好处 using namespace std cin&#xff0c;cout头文件 变量声明 bool变量 const定义常量 string类 结构体 引用& vector set map(键值对) stack(栈) queue(队列) unordered_map和unordered_set(无序键值对和无序集合) 此思维导图来源于…

C语言fgets()函数的用法总结

从c11之后取消了gets()函数&#xff0c;用fgets()代替&#xff0c;用法有所不同&#xff0c;这里详细介绍下fgets()该如何使用。 char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 第一个参数为数据存放的数组&#xff0c;第二个参数为最大长度&#x…

C语言一行语句太长的换行处理方法

文章目录 1、C语言中代码的多行书写2、获取视频教程3、版权声明 1、C语言中代码的多行书写 对C语言初学者来说&#xff0c;编写的程序的功能很简单&#xff0c;一句代码很短&#xff0c;但是在实际开发中&#xff0c;参数往往很长很多&#xff0c;一句代码可能会很长&#xff…

(c语言)fgest()键盘获取后解决换行符'\n'的问题

fgets是会读取回车换行符的。有时候我们并不希望在字符串中存在换行符。 #include <stdio.h>int main (int argc,char *argv[]) {char str[30]"";//scanf("%s",str);printf("随便输入一个字符串呗&#xff1a;");fgets(str,sizeof(str),s…

C语言按行读取文件的正确使用:fgets、feof、ferror

转自 https://blog.csdn.net/yss28/article/details/53453959 一、fgets函数 原型 char *fgets(char *buf, int bufsize, FILE *stream); 功能 fgets函数用来从stream所指文件中读入bufsize-1个字符放入buf为起始地址的空间内&#xff1b;如果在未读满bufsize-1个字符之时…

Linux系统下C语言的编程技巧

Linux系统能够为人们提供更加安全实用的效果,保证计算机系统能够稳定的运行。利用Linux系统下首先要进行C语言的编程,掌握编程的技巧能够更好的发挥计算机的作用。如何掌握Linux系统下计算机C语言的编程技巧是计算机发展的关键要素。本文对Linux系统下计算机C语言的编程技巧进行…

C语言使用fgetc()函数

fgets&#xff08;&#xff09;函数用法比单一&#xff0c;请结合代码一起理解 #include "stdio.h" #include "stdlib.h" int main() {FILE *fp; //定义文件指针char filename[200]; //存放输入的文件名字char str; //存放一个职工…

C语言-宏的实现

写一个宏&#xff0c;计算结构体中某变量相对于首地址的偏移。 结果 #define struct(struct_type,numname) (size_t)&(((struct_type*)0)->numname)实现过程 #include<stdio.h> #define struct(struct_type,numname) (size_t)&(((struct_type*)0)-…

C语言中fgets()函数回车符相关的问题

fgets函数 目录 fgets函数fgets函数与gets函数fgets函数包含回车符原因消去回车符需要消去回车符的情况任务描述编程要求测试说明思路代码问题关键 消去操作 fgets函数与gets函数 请移步下方链接&#xff0c;其中包含了scanf函数、gets函数以及fgets函数的区分总结&#xff1a…

c语言中fgetc函数的介绍

点击上方蓝字关注我&#xff0c;了解更多咨询 1、fgetc函数返回的字符实际上是文件流中位置指针指向的字符。 当fgetc函数读取错误时&#xff0c;返回EOF并设置文件错误标志位。 2、该函数以无符号char强制转换为int的形式返回读取的字符&#xff0c;如果到达文件末尾或出现读错…

fgets()函数的详解-使用技巧-C语言基础

这篇文章要探讨的是“fgets()函数的详解以及使用时需要注意的一些细节”。涉及fgets()函数的应用和需要注意的问题。属于C语言基础篇&#xff08;持续更新&#xff09;。 fgets()&#xff08;函数原型&#xff1a;char *fgets(char *restrict str, int size, FILE *restrict s…

男女声语音转换

男女声特点 &#xff08;此部分转载自https://blog.csdn.net/u011389706/article/details/78965233&#xff09; 男女声基本区别 男女声主要区别在于男女声基音频率&#xff08;pitch frequency&#xff09;的高低。一般女声的音调比男声的音调高&#xff0c;这种不同主要是反…

最新游戏陪玩语音聊天系统源码+视频搭建教程

一个人的游戏叫孤独&#xff0c;一群人的游戏才是乐趣&#xff0c;随着电竞产业在国内的快速发展&#xff0c;游戏陪练行业也迅速成长&#xff0c;现在很多游戏玩家为了追求更高质量的游戏体验感&#xff0c;往往会在玩游戏的过程中找陪练&#xff0c;通过陪玩系统进行预约游戏…

伪造微信语音文件的过程分析

说实话&#xff0c;写这篇《续》&#xff0c;小编是很纠结的。我们绝不是要传授犯罪方法&#xff0c;而是要告诉大家&#xff0c;伪造微信语音聊天记录的行为是如何进行的。&#xff08;安卓实测&#xff0c;苹果略有不同&#xff09; 一、微信语音文件的存储 关于这一点&…

微信PC端技术研究(2)-保存聊天语音

微信PC端技术研究-保存聊天语音 转载地址&#xff1a;[原创]微信PC端技术研究(2)-保存聊天语音-软件逆向-看雪论坛-安全社区|安全招聘|bbs.pediy.com 0x0. 前言 最近又学习了某位大佬用CE的方法&#xff0c;大佬的一句话有点醍醐灌顶&#xff0c;然后有了新的感觉&#xff0…

将微信语音消息转换为 mp3

获取语音文件&#xff08;.silk&#xff09; 需要在电脑上实现。首先&#xff0c;查看你的微信 Mac 版本将数据存放在哪个目录下&#xff0c;我的是在这个目录下&#xff1a; /Users/henry/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.te…

WX Backup - 免费微信聊天记录备份导出与查看工具 (可提取图片/视频/语音)

微信绝对是一个让人爱恨交织的 APP&#xff0c;它在国内几乎完全占据了人们的社交以及生活的方方面面&#xff0c;但腾讯却并没有为微信提供好用的「聊天记录」备份导出和查看的功能。 WX Backup 是一款完全免费的微信聊天记录备份导出工具&#xff0c;支持 Windows 和 Mac&…

微信语音文件转换mp3

1、先找到手机里面的音频文件&#xff08;.amr&#xff09; 2、下载软件silk2mp3 ①双击silk2mp3.exe ②选择文件 ③开始转换 3、本来以为电脑客户端中也能找到相应的文件&#xff0c;但是发现是加密过的&#xff0c;不能用&#xff1b;所以只能使用android手机找到对应文件…