一、目录
- js 中一个 = 、、= 的区别 ?..
- es6 语法中将两个对象合并成一个对象,使用什么语法?…
- let、const、var 有什么区别?…
- jquery 中如何获取当前元素下一个同级元素?…
- JS 中的深拷贝与浅拷贝的区别?…
- 如何在 JS 中编码和解码 URL…
- 请描述一下 cookie,sessionStorage 和 localStorage 的区别…
- 什么是 MVVM?…
- 你知道 vue2.0 兼容 IE 哪个版本以上吗?…
- v-show 和 v-if 的区别?..
- 组件之间怎么进行传值?..
- 路由的两种跳转方式…
- 为什么避免 v-if 和 v-for 一起用?…
- computed 和 watch 有什么区别?..
- vue 组件的 scoped 属性的作用…
- Vue 组件中 data 为什么必须是函数…
- route 和 router 的区别是什么?…
- 为什么需要 nextTick?..
- 请详细说下你对 vue 生命周期的理解…
- Vue2.0 中为什么会出现 vue 修改数据后页面没有刷新这个问题?…
- 动态给 vue 的 data 添加一个新的属性时会发生什么?怎样解决…
- vue 怎么获取 DOM 节点?…
- 分析下 vue 项目本地开发完成后部署到服务器后报 404 是什么原因呢?.
- vue 能监听到数组变化的方法有哪些?为什么这些方法能监听到呢?…
- 怎么将 axios 异步请求同步化处理?…
二、答案
- js 中一个 = 、、= 的区别 ? = 赋值 === 严格判断,值和类型都相等返回 true == 抽象相等,比较时会先转换类型在作值得比较,只要值相等返回 true
- es6 语法中将两个对象合并成一个对象,使用什么语法?
Object.assign() - let、const、var 有什么区别?
const 定义的变量不可以修改,而且必须初始化。
var 定义的变量可以修改,如果不初始化会输出 undefined,不会报错(存在变量提升现象)
let 是块级作用域,函数内部使用 let 定义后,对函数外部无影响(不存在变量提升) - jquery 中如何获取当前元素下一个同级元素?
$(当前元素).next() - JS 中的深拷贝与浅拷贝的区别?
深拷贝递归地复制新对象中的所有值或属性,而拷贝只复制引用。
在深拷贝中,新对象中的更改不会影响原始对象,而在浅拷贝中,新对象中的更改,原始对象中也会
跟着改。
在深拷贝中,原始对象不与新对象共享相同的属性,而在浅拷贝中,它们具有相同的属性。
6.如何在 JS 中编码和解码 URL
encodeURI() 函数用于在 JS 中对 URL 进行编码。它将 url 字符串作为参数并返回编码的字符串
注意: encodeURI()不会编码类似这样字符: / ? : @ & = + $ #,如果需要编码这些字符,请使用
encodeURIComponent() 节码需要 decodeURIComponent()
decodeURI() 函数用于解码 js 中的 URL。它将编码的 url 字符串作为参数并返回已解码的字符串
7.请描述一下 cookie,sessionStorage 和 localStorage 的区别
相同点:都存储在客户端
不同点:
(1).存储大小
cookie 数据大小不能超过 4k。 sessionStorage 和 localStorage 虽然也有存储大小的限制,但比 cookie 大得多,可以达到 5M
或更大。
(2).有效时间
localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;
sessionStorage 数据在当前浏览器窗口关闭后自动删除。
cookie 设置的 cookie 过期时间之前一直有效,即使窗口或浏览器关闭
(3). 数据与服务器之间的交互方式
cookie 的数据会自动的传递到服务器,服务器端也可以写 cookie 到客户端
sessionStorage 和 localStorage 不会自动把数据发给服务器,仅在本地保存
8.什么是 MVVM?
MVVM 是 Model-View-ViewModel 的缩写。MVVM 是一种设计思想。Model 层代表数据模型,也可以在
Model 中定义数据修改和操作的业务逻辑;View 代表 UI 组件,它负责将数据模型转化成 UI 展现出来,
ViewModel 是一个同步 View 和 Model 的对象。
在 MVVM 架构下,View 和 Model 之间并没有直接的联系,而是通过 ViewModel 进行交互,Model 和
ViewModel 之间的交互是双向的, 因此 View 数据的变化会同步到 Model 中,而 Model 数据的变化也会
立即反应到 View 上。
ViewModel 通过双向数据绑定把 View 层和 Model 层连接起来,而 View 和 Model 之间的同步工作
完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作 DOM, 不需要关注数据状
态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。
9.你知道 vue2.0 兼容 IE 哪个版本以上吗?
不兼容 IE8 及以下的
因为 vue 的响应式原理是基于 es5 的 Object.defineProperty 的,而这个方法不支持 ie8 及以下的 - v-show 和 v-if 的区别?
v-show 是 CSS 切换,v-if 是完整的销毁和重新创建(使用频繁切换时使用 v-show,运行时较少改变使用
v-if)
v-show 仅仅控制元素的显示方式,将 display 属性在 block 和 none 中来回切换;而 v-if 会控制这个 DOM
节点的存在与否。当我们需要经常切换某个元素的显示/隐藏时,使用 v-show 更能节省性能上的开销;当只
需要一次显示/隐藏时,使用 v-if 更合理 - 组件之间怎么进行传值?
父组件通过标签上:data=data 方式定义传值
子组件通过 props 方法接受数据
子组件通过$emit 方法传递参数 - 路由的两种跳转方式
<router-link to='home'> router-link 标签会渲染为<a>标签,咋填 template 中的跳转都是这
种;
另一种是编程是导航 也就是通过 js 跳转 比如 router.push('/home')
- 为什么避免 v-if 和 v-for 一起用?
当 Vue 处理指令时,v-for 比 v-if 具有更高的优先级,通过 v-if 移动到容器元素,不会再重复遍历列表中
的每个值。取而代之的是,只检查它一次,且不会在 v-if 为否的时候运算 v-for。 - computed 和 watch 有什么区别?
computed 是计算属性,也就是计算值,它更多用于计算值的场景
computed 具有缓存性,computed 的值在 getter 执行后是会缓存的,只有在它依赖的属性值改变之后,
下一次获取 computed 的值时重新调用对应的 getter 来计算 computed 适用于计算比较消耗性能的计算场景
watch 更多的是[观察]的作用,类似于某些数据的监听回调,用于观察 props $emit 或者本组件的值,当
数据变化时来执行回调进行后续操作无缓存性,页面重新渲染时值不变化也会执行
当我们要进行数值计算,而且依赖于其他数据,那么把这个数据设计为 computed
如果你需要在某个数据变化时做一些事情,使用 watch 来观察这个数据变化。 - vue 组件的 scoped 属性的作用
在 style 标签上添加 scoped 属性,以表示它的样式作用于当下的模块,很好的实现了样式私有化的目的; - Vue 组件中 data 为什么必须是函数
vue 组件中 data 值不能为对象,因为对象是引用类型,组件可能会被多个实例同时引用。
如果 data 值为对象,将导致多个实例共享一个对象,其中一个组件改变 data 属性值,其它实例也会受到影
响。 - route 和 router 的区别是什么?
route 是“路由信息对象”,包括 path,params,hash,query,fullPath,matched,name 等路由信息参数。
router 是“路由实例对象”,包括了路由的跳转方法(push、replace),钩子函数等。 - 为什么需要 nextTick?
Vue 是异步修改 DOM 的并且不鼓励开发者直接接触 DOM,但有时候业务需要必须对数据更改–刷新
后的 DOM 做相应的处理,这时候就可以使用 Vue.nextTick(callback)这个 api 了。 - 请详细说下你对 vue 生命周期的理解
总共分为 8 个阶段创建前/后,载入前/后,更新前/后,销毁前/后。
创建前/后:在 beforeCreated 阶段,vue 实例的挂载元素 e l 和数据对象 d a t a 都为 u n d e f i n e d ,还未初始化。在 c r e a t e d 阶段, v u e 实例的数据对象 d a t a 有了, el 和数据对象 data 都为 undefined,还未初始 化。在 created 阶段,vue 实例的数据对象 data 有了, el和数据对象data都为undefined,还未初始化。在created阶段,vue实例的数据对象data有了,el 还没有。
载入前/后:在 beforeMount 阶段,vue 实例的$el 和 data 都初始化了,但还是挂载之前为虚拟的 dom
节点,data.message 还未替换。在 mounted 阶段,vue 实例挂载完成,data.message 成功渲染。
更新前/后:当 data 变化时,会触发 beforeUpdate 和 updated 方法。
销毁前/后:在执行 destroy 方法后,对 data 的改变不会再触发周期函数,说明此时 vue 实例已经解除
了事件监听以及和 dom 的绑定,但是 dom 结构依然存在 - Vue2.0 中为什么会出现 vue 修改数据后页面没有刷新这个问题?
受 ES5 的限制,Vue.js 不能检测到对象属性的添加或删除。因为 Vue.js 在初始化实例时将属性转为
getter/setter,所以属性必须在 data 对象上才能让 Vue.js 转换它,才能让它是响应的。 - 动态给 vue 的 data 添加一个新的属性时会发生什么?怎样解决
如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。如果想要使添加的值做到响应式,
应当使用 s e t ( ) 来添加对象。 22 v u e 怎么获取 D O M 节点?我们在 v u e 中需要操作某一个元素的时候,可以在元素上添加 r e f 属性,使用 set()来添加对象。 22 vue 怎么获取 DOM 节点? 我们在 vue 中需要操作某一个元素的时候,可以在元素上添加 ref 属性,使用 set()来添加对象。22vue怎么获取DOM节点?我们在vue中需要操作某一个元素的时候,可以在元素上添加ref属性,使用refs 来获取到该元素,进
而进行一些列操作 - 分析下 vue 项目本地开发完成后部署到服务器后报 404 是什么原因呢?
1.检查 nginx 配置,是否正确设置了资源映射条件;
2.检查 vue.config.js 中是否配置了 publicPath,若有则检查是否和项目资源文件在服务器摆放位置一致。 - vue 能监听到数组变化的方法有哪些?为什么这些方法能监听到呢?
数组的 push、pop、shift、unshift、splice、sort、reverse 七种方法,Vue 源码中对这七种方法重写进行
重写 - 怎么将 axios 异步请求同步化处理?
使用 asyns/await
文章来源地址https://www.toymoban.com/news/detail-856709.html
文章来源:https://www.toymoban.com/news/detail-856709.html
到了这里,关于【前端】项目碰到的面试题整理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!