每日面经总结(一日五题系列)
- 作用域链:js引擎沿着作用域去其上下文环境中查找变量的链条,称为作用域链,作用域是静态的,由代码中函数声明的位置来决定。
- 闭包:在js中,内部函数总是可以访问其外部函数中声明的变量,当调用一个外部函数返回的内部函数后,即使外部函数已经执行结束了,但内部函数引用外部函数的变量依然存在内存中,这些变量的集合就称为闭包。
①新生代:副垃圾回收器使用Scavenge算法回收:将新生区分为对象区域和空闲区域,新加入的对象会被放入对象区域,对象区域快被写满时执行垃圾清理操作;将对象区域的垃圾进行标记;将存活的对象复制到空闲区域;将对象区域与空闲区域进行角色翻转
②新生区中经过两次垃圾回收的对象,会被提升为老生代
- cookie与session的区别:①cookie 数据存放在客户端,session 数据放在服务器端
②cookie本身不安全(cookie对客户端是可见的,客户端可以读取操作Cookie中的内容。而Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险),考虑安全性应该使用session
- web存储方案的对比:
①Cookie最开始出现是为了解决HTTP无状态的问题,用来保存用户登录等状态信息, cookie会自动添加到请求头中传递给服务器端,而localstorage和sessionstorage不会自动传递给服务器端,仅在本地保存
②存储大小的区别,cookie只有4k大小左右,而另外两个有5M
③有效期的区别,cookie在服务器设置的过期时间之前均有效;session storage在浏览器窗口关闭前有效,localstorage永久有效
④作用域不同,cookie和localstorage是同源窗口均可以共享,session storage仅在当前浏览器的同源窗口***享,且在浏览器关闭后销毁
① hash模式,url中会带#,hash值就是#后面的内容,hash值的变化不会发送请求给服务器端,会在浏览器的访问历史中增加一条记录,通过绑定hashchange事件来监听路由变化并渲染
① history模式主要使用HTML5的pushState()和replaceState()这两个api结合window.popstate事件(监听浏览器前进后退)来实现,pushState()向历史记录中添加一条记录,replaceState()将当前历史记录替换,可以实现页面无刷新的跳转,会请求后端服务器,需要和后端发起请求的url一致
区别:①hash模式在路由中会带一个#,不够优雅;②pushState()中相同的url也会添加一条记录,hash模式中,hash值只有不同才会添加到栈中③pushState()的url可以是同源的任意url,但hash只能改变#后面的值,故只可设置同文档的值1. Js的几种模块化规范
2. 进程和线程的区别
3. 修改elementUi样式的方式
4. Vue组件间通信的方式
5. Vue router中传参的方式
#面经##校招#