H5前端面试题(上)

简介: H5前端面试题

1.src和href的区别 ?

Src是img标签中用来引入图片的方法
Href是a标签中要跳转的地址
Src用来替代这个元,而href用来建立这个标签与外部资源的关系

2.页面元素隐藏方式 和各自特点?

Display:none; 不占用页面空间
Opacity:0;  透明度为0,仍然会占用页面空间
Overflow:hidden;  超出不显示
Visibility:hidden; 仍然会占用页面空间

3.用过哪些盒模型,以及他们各自的区别?

主要区别:宽高的定义不同
标准盒模型:设置的宽就等于内容的宽   box-sizing:content-box;
怪异盒模型:内容的宽 = 设置的宽 - padding的宽 - border的宽  box-sizing:border-box;

4.谈谈你的移动端适配方案有哪些?

百分比布局
响应式布局
Vw/vh布局
Rem布局
弹性盒子布局

5.js 数据类型有几种?它们之间的区别是什么?

基本数据类型,引用(复杂)数据类型
区别:
基本类型在栈内存储,引用类型在堆内存储
不同的neicun分配机制也带来了不同的访问机制
赋值时变量的不同
传递参数的过程不同(把实参赋值给形参的过程)

6.数据类型强制转化和隐式转化的分别怎么使用?

强制转换:强制转换就是手动把数据转成想要的数据类型,但不会改变原变量中存储的数据及数据类型
隐式转换:计算机程序自动完成的转换,但是不会在任何时候都发生,只会在特定的情况下执行

7.let const 和 var 的区别 ?

Var声明变量存在变量提升,即变量可以在声明之前调用,值为:undefined
Let const 不存在变量提升,一定要在声明后调用,否则会报错
Var不存在块级作用域
Let const存在块级作用域
Var允许重复声明
Let const在同一作用域不允许重复声明
Var let 可以修改声明的变量
Const声明一个只读的常量,一旦声明常量的值就不能修改

8.箭头函数和普通函数的区别 ?

外形不同:箭头函数使用箭头(=>)定义,普通函数没有
箭头函数都是匿名函数:普通函数可以有匿名函数和具名函数,但是箭头函数都是匿名函数
箭头函数不能用于构造函数,不能使用new。普通函数可以用于构造函数,以此创建对象实例
箭头函数的this指向不同,箭头函数没有自己的this,他的this是声明时所在的上下文的this,在普通函数中this总是指向调用他的对象

9.解释什么叫回调地狱 以及怎么解决回调地狱 ?

回调地狱的意思通俗点讲就是回调函数在调用回调函数,从而使之进入一个死循环,这就形成了所谓的回调地狱,而想  要解决这一方法就只有使用ES6新增的promise方法

10.说明原生ajax的实现步骤?

Var xhr = new XMLHttpRequest()
Xhr.open(‘get’,请求的网址,async(同步异步))
Xhr.send()
Xhr.onreadystatechange=()=>{
  If(this.readystate == 4 && this.status == 200){
    成功
  }else{
    失败
  }
}

11.什么情况下会导致跨域?

跨域,指的是浏览器不能执行其他网站的脚本。 它是由浏览器的同源策略造成的,是浏览器 施加的安全限制。 同源策略:所谓同源是指:协议,域名,端口均相同。 即便两个不同的 域名指向同一个ip地址,也非同源。

12.Vue生命周期有哪些方法,分别有什么作用,简单说明

创建前:Beforecreate  实例已经初始化,但不能获取DOM节点。(没有data,没有el)
创建后:Created     实例已经创建,仍然不能获取DOM节点。(有data,没有el)
挂载前:beforemount   模板编译完成,但还没挂载到界面上。(有data,有el)
挂载后:Mounted     编译好的模板已挂载到页面中(数据和DOM都已经渲染出来)。
更新前:beforeupdate  数据发生变化立即调用,此时data中数据是最新的,但页面上数据仍然是旧的(检测到数据更新时,但DOM更新前执行)。
更新后:Updated     更新结束后执行,此时data中的值和页面上的值都是最新的。
销毁前:beforedestroy 当要销毁vue实例时,在销毁之前执行。
销毁后:Destroyed   在销毁vue实例时执行。

13.使用vue中的v-for时,为什么要绑定 :key? 如果不绑定会有什么效果?

v-for默认使用就地复用策略,列表数据修改的时候,他会根据key值去判断某个值是否修改,如果修改,则重新渲染这一项,否则复用之前的元素,如果不绑定key的话,每次修改某一条数据,都会重新渲染所有数据,会导致大量内存的浪费。如果绑定了key,每次修改某一条数据的时候,就只会重新渲染改条数据的变化,节省了大量的内存。

14.v-show 和 v-if 的作用和区别, v-bind 和 v-model的作用和区别?

v-show和v-if的作用:控制元素的显示与隐藏
v-show切换元素的didplay属性none隐藏block显示
用来控制元素显示隐藏初始化会渲染
适用于频繁切换显示隐藏元素不能在template上使用
简单基于css的切换
v-if通过DOM是否存在来控制组件显示隐藏
    初始化不会渲染
    不适用于频繁切换显示隐藏的组件,能在template上使用
    切换过程中合适地销毁和重建
使用场景不同:
    if 多用于需要判断数据 从而整体删除一个标签时
    (不频繁切换显示状态)
    show 多用于通过判断数据来处理标签的显示时
(频繁切换显示状态)
v-bind 和 v-model相同点: 用来绑定数据到标签中,符合数据驱动视图
v-bind:单向绑定,绑定数据,属性和表达试,缩写为":" 只负责数据显示的标签
v-model双向绑定,主要用于表单中 同时负责数据显示和收集的标签

15.vue 组件通信如何实现,至少列举3种方式并说明各自的局限性?

父组件通过v-bind绑定一个自定义的属性,子组件通过props接收父组件传来的数据;
子组件通过$emit触发事件,父组件用on()或者在子组件的自定义标签上使用v-on来监听子组件触发的自定义事件,从而接收子组件传来的数据。
ref如果在普通Dom元素上使用,引用指向的就是 DOM 元素;如果在子组件上使用,引用  就指向组件实例,可以通过实例直接调用组件的方法和数据

16.详细说明vue组件中 data ,computed 和 watch的区别?

data:Vue 实例的数据对象。Vue 将会递归将 data 的 property 转换为 getter/setter,从而让data 的 property 能够响应数据变化。对象必须是纯粹的对象 (含有零个或多个的 key/value对)
Computed:是一个计算属性具有依赖性只执行一次就拿出来调用下一次获取computed的值时才会重新计算                          
Watch: 是调用一次执行一次如果监听数据变化都会执行回调

17.keep-alive的作用是什么? 使用它的目的是什么?

keep-alive是vue内置的一个组件,而这个组件的作用就是能够缓存不活动的组件,我们能够知道,一般情况下,组件进行切换的时候,默认会进行销毁,如果有需求,某个组件切换后 不进行销毁,而是保存之前的状态,那么就可以利用keep-alive来实现 字符串或正则表达式。

18.vue-router的作用是什么? 为什么不使用a标签?

vue-router:动态路由,用于跳转页面,另外vue-router还可以实现页面间传参等其他功能
这是因为用Vue做的都是单页应用(当你的项目准备打包时,运行 npm run build 时,就会 生成dist文件夹,这里面只有静态资源和一个index.html页面),所以你写的<a></a>标签是不起作用的,你必须使用vue-router来进行管理

19.vuex 是什么? 怎么使用?为什么用使用它?

为处理复杂的组件通信,所以使用的一种状态管理模式
它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化
state 数据源,载体
getters 用于改变state的值,派生出多个数据源
mutation 唯一可以提交可以改变state的状态,也就是数据的属性值
actions 提交的是mutation,用commit提交 而不是直接变更状态,可以包含任意异步出操作
modules 拆分成多个模块
vuex就是将数据共享给多个组件共同使用,同时也将这个数据的状态进行了共享(一个组件改变这个数据的状态其它组件也跟着改变)

20.请谈一下你对 使用原生js开发和 使用vue开发的看法。

原生js
  面向浏览器编程,需要写很多兼容性代码
  操作dom更繁琐,复杂交互需要频繁操作dom,且代码不够友好
  可扩展性和可维护性没有保证
  团队协作困难
  开发效率低下
vue
  1)优点 :
      基于MVVM 实现的数据驱动视图,解放了DOM操作
      View 与 Model 分离处理, 降低代码的耦合度
  2)缺点:
      当双向绑定时,Bug调试难度增大
      大型项目中,View和Model过多,维护成本过高
相关文章
|
缓存 前端开发 中间件
[go 面试] 前端请求到后端API的中间件流程解析
[go 面试] 前端请求到后端API的中间件流程解析
|
存储 JavaScript 前端开发
2022年前端js面试题
2022年前端js面试题
460 156
|
存储 XML 移动开发
前端大厂面试真题
前端大厂面试真题
|
移动开发 前端开发 JavaScript
前端H5使用canvas画爱心以及笑脸
本文介绍了HTML5中的canvas元素及其基本用法,通过JavaScript在canvas上绘制图形。首先简述了canvas的功能,接着详细展示了如何使用`bezierCurveTo`方法绘制爱心和`arc`方法绘制笑脸,并附有示例代码及效果说明。最后总结了canvas在网页图形绘制上的应用潜力。
353 2
|
Web App开发 前端开发 Linux
「offer来了」浅谈前端面试中开发环境常考知识点
该文章归纳了前端开发环境中常见的面试知识点,特别是围绕Git的使用进行了详细介绍,包括Git的基本概念、常用命令以及在团队协作中的最佳实践,同时还涉及了Chrome调试工具和Linux命令行的基础操作。
「offer来了」浅谈前端面试中开发环境常考知识点
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
247 1
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题
|
存储 JavaScript 前端开发
|
存储 前端开发 JavaScript
44 个 React 前端面试问题
【8月更文挑战第18天】
229 2
|
存储 前端开发 JavaScript
44 个 React 前端面试问题
44 个 React 前端面试问题

热门文章

最新文章