目录
17.Javascript本地存储的方式有哪些?区别及应用场景?
1.git合并分支?
要合并分支,可以使用 git merge
命令。步骤如下:
-
切换到需要合并的目标分支,执行命令
git checkout <target-branch>
。 -
执行命令
git merge <source-branch>
,其中<source-branch>
是需要合并的源分支。 -
Git 会尝试将源分支的提交合并到目标分支中。如果存在冲突,需要手动解决冲突并提交修改。
-
将合并后的代码推送到远程仓库,执行命令
git push
。
需注意的是,在执行 git merge
命令之前,先执行 git fetch
命令,从远程仓库获取最新的代码。同时,如果存在冲突,应该谨慎处理,避免不必要的代码丢失和错误。
2.mutations和actions的区别?
①actions主要用于响应组件中的动作,通过 commit( )来触发 mutation 中函数的调用, 间接更新 state,不是必须存在的;mutations主要用于操作修改数据,是必须存在的。
②actions可以进行异步操作,可用于向后台提交数据或者接受后台的数据;mutations中是同步操作,不能写异步代码、只能单纯的操作 state ,用于将数据信息写在全局数据状态中缓存,不能异步操作。
3.强缓存和协商缓存有了解过吗?
强缓存:浏览器不会像服务器发送任何请求,直接从本地缓存中读取文件并返回状态码 200。
协商缓存:向服务器发送请求,服务器会根据这个请求的request header的一些参数来判断是否命中协商缓存,如果命中,则返回304状态码并带上新的response header通知浏览器从缓存中读取资源。
区别:强缓存策略和协商缓存策略在缓存命中时都会直接使用本地的缓存副本,区别只在于协商缓存会向服务器发送一次请求以此来确认是否使用缓存。它们缓存不命中时,都会向服务器发送请求来获取资源。在实际的缓存机制中,强缓存策略和协商缓存策略是一起合作使用的。浏览器首先会根据请求的信息判断,强缓存是否命中,如果命中则直接使用资源。如果不命中则根据头信息向服务器发起请求,使用协商缓存,如果协商缓存命中的话,则服务器不返回资源,浏览器直接使用本地资源的副本,如果协商缓存不命中,则浏览器返回最新的资源给浏览器。
4.什么是事件委托?
事件委托就是把原本需要绑定在子元素上的事件(onclick、onkeydown 等)委托给它的父元素,让父元素来监听子元素的冒泡事件,并在子元素发生事件冒泡时找到这个子元素。
5.什么是原型和原型链?
原型是一个对象,是函数的一个属性prototype;通过该函数实例化出来的对象都可以继承得到原型上的所有属性和方法。
原型链就是原型组成的链。当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会在构造函数的prototype的__proto__中查找,这样一层一层向上查找形成的一个链式结构称为原型链。
6.Css如何绘制三角形?
使用 border 绘制三角形:宽高为0,border颜色不一。
7.箭头函数特点?
①写法更简洁;
②箭头函数不绑定this,会捕获其所在上下文的this,作为自己的this。
③箭头函数是匿名函数,不能作为构造函数,不可以使用new命令,否则后抛出错误。
④箭头函数不绑定arguments,取而代之用rest参数解决,同时没有super和new.target。
⑤使用call,apply,bind并不会改变箭头函数中的this指向