面试题总结
1.this指向
1)函数形式调用,this指向window
2)方法形式调用,this指向调用方法的对象
3)构造函数调用,this指向创建的实例对象
4)call和apply调用,this是指定的那个对象
5)箭头函数
箭头函数的this看外层是否有函数
有,外层函数的this就是内部函数的this
没有,就是window
6)特殊情况:通常意义上this指针指向为最后调用它的对象如果返回值是一个对象,那么this的指向就是那个返回的对象;如果返回值不是一个对象,那么this还是指向函数的实例 。
2.call、apply和bind的区别
三者都可以改变函数的this对象指向。
三者第一个参数都是this要指向的对象,如果如果没有这个参数或参数为undefined或null,则默认指向全局window。
三者都可以传参,但是apply是数组,而call是参数列表,且apply和call是一次性传入参数,而bind可以分为多次传入。
bind 是返回绑定this之后的函数,便于稍后调用;apply 、call 则是立即执行 。
彻底弄懂call、apply和bind区别-知乎
3.forEach和map区别
相同点:
都是循环遍历数组中的每一项
每次执行匿名函数都支持3个参数,分别是item(当前每一项)、index(索引值)、arr(原数组)
区别:1)forEach没有返回值,不会返回执行结果,而是会返回undefined。forEach会修改原来的额数组
map()返回一个新数组,数组中的元素为原始数组调用函数处理后的值
2)forEach方法用来调用数组的每个元素,将元素传递给回调函数
forEach对于空数组不会调用回调函数。无论数组是否为空,都返回undefined。这个只是将数组中的每一项作为callback的参数执行一次
3)forEach的执行速度 < map执行速度
4)使用:forEach适合于你并不打算改变数据的时候,而只是想用数据做一些事情 – 比如存入数据库或则打印出来。
map()适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。这样的优点在于你可以使用复合(composition)(map(), filter(), reduce()等组合使用)来玩出更多的花样。
forEach和map的区别和用法
4.浅拷贝、深拷贝
深复制和浅复制只针对像 Object, Array 这样的复杂对象的。简单来说,浅复制只复制一层对象的属性,而深复制则递归复制了所有层级。
彻底弄懂深浅拷贝
5.MVVM和MVC的区别
mvvm: 即Model-View-ViewModel(模型-视图-视图模型)的简写。
模型(Model):后端传递的数据
视图(View):即前端渲染的页面
视图模型:是 mvvm 的核心,是连接 view 与 model 的桥梁。通过数据双向绑定实现。
定义和区别
6.闭包、内存泄漏、垃圾回收机制
js闭包、内存泄漏
7.作用域
12种数组去重方法
8.数组常用方法
js数组常用方法整理
9.localStorage、sessionStorage和Cookies区别
localStorage、sessionStorage和Cookies
10.阻止事件冒泡、阻止默认事件
阻止事件冒泡、取消默认事件
11.同源策略、跨域解决方案
浏览器同源策略及跨域解决方案
浏览器同源策略及跨域解决方案
12.promise函数
JavaScript异步与Promise实现
14.vue组件传值
组件传值
15.vue双向数据绑定
双向数据绑定
表单输入绑定
理解原理
16.computed计算属性原理
computed-源码
实现原理
对比watch侦听器
17.computed和watch区别
计算属性和侦听器
Vue的computed和watch细节分析
vue中methods、watch、computed之间的差别对比以及适用场景
Vue中 computed、methods和watch的区别
18.v-if和v-show区别,如果只是做显隐用哪个更好?
区别分析
区别及使用场景
19.v-for和v-if同时使用,哪个先执行
v-if和v-for一起使用注意规范
20.watch侦听器
watch
21.vue生命周期
vue实例-生命周期
22.vuex原理
vuex从使用到原理解析
23.路由传参
vue中的路由传参
路由传参方法
vue-router传递参数的几种方式
25.渲染函数
vue渲染函数
26.vue $router都有哪些方法
router方法
27.axios拦截器原理
axios拦截器原理及请求等大重发实现
axios拦截器设置及其实现原理剖析
28.undefined和NAN
Javascript 中 null、NaN和undefined的区别总结
29.isNAN返回结果是什么
isNaN 意思是is Not a Number,是不是不能转换为一个数字
W3School
30.rem、px 适配怎么做
px、em、rem区别介绍
移动端如何做rem适配
rem如何实现自适应布局
31.token
什么是token
关于token使用
token作用及实现原理
前后端分离项目,后端是如何处理前端传递的token?
token对于前端代表什么,前后端如何传递token
33.vue最大的优势是什么
中文文档上手入门快,轻量级,整个源码js文件不大,双向数据绑定,数据驱动视图组件化,数据和视图分离。
相比传统网页,vue是单页面可以只刷新某一部分。