# examanswer
**Repository Path**: csyn/examanswer
## Basic Information
- **Project Name**: examanswer
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-06-29
- **Last Updated**: 2021-06-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 1、v-show和v-if的区别?
v-show是通过操作css的display属性来实现元素的显现和隐藏,
v-if是直接销毁和重构来实现元素的显现和隐藏。
# 2、Vue中父子组件之间的参数传递如何做到的?
父组件向子组件传值:
1)在子组件的props中创建一个属性,用来接受父组件传过来的值
2)在父组件中注册子组件
3)在子组件的标签上添加props中添加的属性
4)将父组件要传递给子子组件的值赋值给该属性
子组件向父组件传值:
1)在子组件中以某种方式的方法触发一个自定义事件
2)将要传递的值作为$emit的第二个值,该值作为实参传递给要触发的事件
3)在父组件中注册子组件,并子组件的标签上添加自定义事件的监听
# 3、什么是mvvm?
是model-view-viewmodel的缩写,是一种思想。model是一种数据模型,可以在model中进行数据的操作和修改,view是ui模型,它负责将数据模型显示出来。View-Model是同步view和model的一个对象。
# 4、列举5个常见的vue指令?
v-on、v-bind、v-show、v-if、v-html、v-text、v-cloak、v-for
# 5、Get和Post的区别,如何使用post?
1)get会将提交的数据放在浏览器的url中,以?分割地址和参数,参数之间使用&连接,post将提交的数据放在http包中。
2)get请求提交的数据最大为1024kb,但是这样说不太准确,因为不同的浏览器,不一样,而post理论上没有上限。
3)post的安全性要比get高。此安全性非彼安全性,主要是为了防止登录页面的缓存,还有浏览器的历史记录里可能有账号密码,这样别人就能轻而易举的拿到账号密码了。
4)机制不同,get是一种想服务器发送数据的请求,而post是一种向服务器提交数据的请求,在form表单中,method默认为get,实质上它们只是机制不同,并不是一个发,一个取。
# 6、分别介绍普通函数中的this和箭头函数中的this?
普通函数中的this:
在普通函数中,this代表总是它的调用者,默认情况下this指向window,严格模式下,没有直接的调用者中this指向undefined,使用通过call,apply,bing绑定的,this指向绑定的对象
箭头函数的this:
箭头函数没有this,箭头函数this默认指向定义时的对象,而不是执行时的对象。简单来说,箭头函数不会自己创建this,它只会从自己作用域的上一级继承this。定义它时的环境可能是window,也可能是其它的。
# 7、var、let、const之间的区别?
var声明全局变量
let声明的变量只在自己所在的代码块内有效
const一个只读的常量,一旦声明,常量的值就无法改变
# 8、什么是盒子模型?
在浏览器中,元素有几部分组成,元素的内容区域content,元素的内边距padding,元素的边框border,元素的外边距margin四部分组成。在这几部分中,有的用来显示内容,有的只是用来分割相邻的区域。这四部分共同构成了css元素的盒子模型。
9、行内元素有哪些?块状元素有哪些?空元素有哪些?
行内元素:a,b,span,input,textarea,img,label,select,strong,em,button
块状元素:div,bloakquote,ul,li,dl,dd,dt,p,h1-h6
空元素:br,hr,meta,link,input,img
# 10、css实现水平居中?
一道经典的问题,实现方法有很多种,以下是其中一种实现:
HTML结构:
```
```
CSS:
.wrapper{position:relative;}
.content{
background-color:#6699FF;
width:200px;
height:200px;
position: absolute; //父元素需要相对定位
top: 50%;
left: 50%;
margin-top:-100px ; //二分之一的height,width
margin-left: -100px;
}
# 11、简述一下src和href的区别?
href指向网络资源所在的位置,建立和当前文档或当前元素之间的链接,常用的元素有link,a
src指向静态资源的位置,被指向的资源会被嵌入到该文档的标签上,在请求src资源时,会将资源下载并应用到该文档内,例如,js脚本,img,iframe标签等,当浏览器处到该元素时。会暂停其他资源的下载,直到该资源下载完毕,所以一般把js脚本放在末尾。而不是头部。
# 12、简述同步和异步的区别?
同步是阻塞模式,异步是非阻塞模式。
同步是当执行某个请求时,如果该请求需要等待一段时间,那么它会一直等下去,直到该请求执行完毕,才会继续向下执行。
异步是指进程不需要一直等下去,可以跳过需要等待的请求,当该请求有消息通知时,再回来执行它。
# 13、px和em的区别?
px和em都是长度单位。区别是,px是固定长度,计算起来比较容易,而em并不是固定的,并且em会继承父元素的字体大小。
浏览器的默认高度都是16px,所以未经调整的浏览器都符合1em=16px。
# 14、使用递归的方式写1-100求和?
function add(num1,num2){
let num = num1+num2
if(num2+1>100){
return num
}else{
return add(num,num2+1)
}
}
let sum=add(1,2)
# 15、浏览器的内核分别是什么?
1.Trident(IE内核)2.Gecko(Firefox内核)
3.Webkit(Safari内核)4.Chromium(谷歌浏览器)
# 16、怎样添加、移除、移动、复制、创建和查找节点?
1)创建新节点
createDocumentFragment() //创建一个DOM片段
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点
2)添加、移除、替换、插入
appendChild() //添加
removeChild() //移除
replaceChild() //替换
insertBefore() //插入
3)查找
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值
getElementById() //通过元素Id,唯一性
# 19、你所知道的http的响应码及含义?
1xx(临时响应)
100: 请求者应当继续提出请求。
101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备进行切换。
2xx(成功)
200:正确的请求返回正确的结果
201:表示资源被正确的创建。比如说,我们 POST 用户名、密码正确创建了一个用户就可以返回 201。
202:请求是正确的,但是结果正在处理中,这时候客户端可以通过轮询等机制继续请求。
3xx(已重定向)
300:请求成功,但结果有多种选择。
301:请求成功,但是资源被永久转移。
303:使用 GET 来访问新的地址来获取资源。
304:请求的资源并没有被修改过
4xx(请求错误)
400:请求出现错误,比如请求头不对等。
401:没有提供认证信息。请求的时候没有带上 Token 等。
402:为以后需要所保留的状态码。
403:请求的资源不允许访问。就是说没有权限。
404:请求的内容不存在。
5xx(服务器错误)
500:服务器错误。
501:请求还没有被实现。
# 17、说一下闭包?
实质是因为函数嵌套而形成的作用域链。
例如函数a中嵌套一个函数b,而函数b可以访问到函数a中的变量。可以使用闭包来实现一些功能,而不会污染全局变量。
# 18、export和export default区别?
export分别暴露,export default默认暴露
export可以先定义再输出,也可以直接输出。
默认暴露只能有一个,所以export default在同一模块中只能出现一次,并且默认暴露不能先定义再输出,只能直接输出
# 20、为什么使用v-for的时候需要添加key属性?
因为vue在添加dom的时候是根据新旧dom数据对比的,使用key属性来给每一个节点做一个唯一标识
# 21、computed和watch的区别和运用的场景?
computed是计算属性,依赖其他属性的值,有缓存,只有当它依赖的属性值发生改变时,下一次获取的computed才会重新计算computed的值。
watch监听属性,没有缓存,更多的是观察者的角度,类似于某些数据的监听回调,每当监听的数据发生改变时就会调用监听的后续操作。如果想深度监听对象的属性的值,可以打开deep:true选项,这样便会对对象的每一项进行监听。