影院网站怎么做,百度助手官网,备案系统,旧版wordpress目录 1.localstorage和sessionstorage的区别2.for...in 和 for...of的区别3.深拷贝和浅拷贝的区别 以及深拷贝的方法4.同步和异步的区别5.堆和栈的区别6.基本数据类型有哪些7.对于this的理解8.前端性能优化9.watch和computed的区别10.Vue双向绑定原理11.谈谈闭包12.css有哪些计… 目录 1.localstorage和sessionstorage的区别2.for...in 和 for...of的区别3.深拷贝和浅拷贝的区别 以及深拷贝的方法4.同步和异步的区别5.堆和栈的区别6.基本数据类型有哪些7.对于this的理解8.前端性能优化9.watch和computed的区别10.Vue双向绑定原理11.谈谈闭包12.css有哪些计算属性13.js如何计算宽高 1.localstorage和sessionstorage的区别
localstorage是本地存储只要浏览器没有被卸载这个数据库都是存在的。 sessionstorage是会话存储只要浏览器tab页没有关闭sessionstorage就一直存在。
2.for…in 和 for…of的区别
for…in:只能获得对象的键名不能获得键值 for…of:允许遍历获得键值。 例如var arr [‘red’,‘green’,‘yellow’] for…in拿到的是[0,1,2]for…of拿到的是[‘red’,‘green’,‘yellow’]
3.深拷贝和浅拷贝的区别 以及深拷贝的方法
浅拷贝只是增加了一个指针指向已经存在的内存地址A变B也变 深拷贝增加了一个指针并且申请了一个新的内存用来存放拷贝的值A变B不变。
深拷贝的几种方式
JSON实现先用JSON.Stringify() 将对象转换为JSON字符串形式再用JSON.parse()将JSON字符串转换为原生JS对象。这种方法有一个缺点会把undefined值和function()过滤掉,即原对象中有function()和undefined时拷贝后这两种类型的数据会丢失。object.assign({},obj1)当对象只有一级属性的时候可以用object.assign当对象有二级属性时就会变成浅拷贝了。用递归来拷贝lodash中有一个方法 _.cloneDeep()也可以实现深拷贝。ES6中的扩展运算也可以实现深拷贝let someone {…p1}
4.同步和异步的区别
同步所有操作都做完才返回给客户用户体验不好容易卡死。 异步将请求放入消息队列并反馈给用户然后再慢慢写入数据库。
5.堆和栈的区别
栈先进后出系统自动分配和释放内存。 堆队列优先先进先出动态分配空间一般由程序员分配释放实际上保存的是一个指针。 当我们需要引用类型的值时首先从栈中获得对象的地址指针再从堆内存中获取所需数据。
6.基本数据类型有哪些
nullundefinedstringnumberbooleanES6还多了一种symbol
7.对于this的理解
全局作用域中的this指向window普通函数中this指向全局对象构造函数中this指向new这个对象箭头函数中this指向上一级作用域对象函数中this指向这个对象applycall调用时指向第一个参数没有则默认window。
如何改变this指向bindcallapplynew一个this
8.前端性能优化
减少http请求减少对DOM的操作减少页面的重绘异步加载如滚动页面滚动到下面再加载后面的内容Ajax使用缓存localstoragesessionstorage无效字符及注释的删除代码语义的缩减与优化降低代码的可读性JavaScript与css文件剥离与压缩剥离后能够有针对性的对其进行单独处理。
9.watch和computed的区别
computed是计算属性只有当依赖的数据变化时才会计算当数据不变时它只会读取缓存数据。适用于一些重复使用的数据或复杂费时的计算放入computed中计算然后会在computed中缓存起来下次可以直接获取。computed不支持异步。 watch用来监听数据当data发生变化时执行回调。deep:默认为false当deep为true时监听器会一层层往下遍历给对象的所有属性加上这个监听器此时性能开销会非常大。watch不仅可以监听数据变化还可以监听路由变化。
10.Vue双向绑定原理
Vue双向绑定原理是通过数据劫持发布订阅模式相结合的方式来实现的就是数据层发生变化时可同步更新视图层当视图层发生变化时同步更新数据层。其实就是MVVM框架当用户操作viewviewModel感知到变化然后通知Model发生相应改变反之当Model发生改变ViewModel也能感知到变化使View作出相应的更新。
11.谈谈闭包
一个嵌套函数中引用了封闭函数定义的变量并且该函数可以在其定义环境外即封闭函数外被执行。
function f1(){ // 封闭函数var n1; // 自由变量var inner function(){ // 嵌套函数n;}return inner;
}优点可以缓存数据起到隔离作用域的作用防止变量污染。 缺点 由于闭包会使得函数中的变量都被保存在内存中内存消耗很大所以滥用闭包会造成网页性能问题在IE9之前可能会导致内存泄露。 解决办法在退出函数前将不适应的局部变量删除如手动赋null。 由于闭包涉及跨域访问所以会导致性能损失。 解决办法可以通过把跨作用域变量存储在局部变量中然后直接访问局部变量来减轻对执行速度的影响。
12.css有哪些计算属性
css计算属性widthheightmarginpaddingborderfont-sizeline-heighttopleftrightbottomtransformtransitioncalc() vw,vh这两个单位用于定义元素的宽度和高度分别表示视口宽度和高度的百分比。 两个特殊的css属性 inherit强制手动继承将父元素的值应用到该元素。 initial初始值将该元素的属性变为默认值。
13.js如何计算宽高
offsetWidth 和 offsetHeight元素在页面中占据宽高总和包括滚动条clientWidth 和 clientHeight获取元素可视部分的宽高scrollWidth 和 scrollHeight滚动宽度和高度innerWidth 和innerHeight获取窗口的宽度和高度包括滚动条