总结一点前端面试题一

call和apply的作用

call和apply的作用都是改变this指向,它们的区别是传参方式不同,call直接传参,apply用数组传参。

A.call(B,args):  对象B调用A这个方法,参数为args

A.apply(B,array): 对象B调用A这个方法,参数为array

sessionStroage、localStorage、cookie的区别

sessionStroage在浏览器窗口关闭之前有效,不能在不同的浏览器窗口中共享

localStroage始终有效,在所有同源窗口中共享

cookie可以设置有效时间在有效时间之前都有效,若不设置有效时间则关闭浏览器窗口就消失,在所有同源窗口中共享

同源策略

同源是指协议、域名、端口号都相同。同源策略是一个浏览器安全策略,同源才能读写对方的资源。同源策略是为了保护用户信息的安全,防止而已网站窃取数据,cookie保存了用户登录等信息资料,如果没有同源策略A网站可以拿到B网站的cookie,那是十分不安全的,这也是cookie只在同源窗口中共享的原因。

垃圾回收机制

垃圾回收机制会定期找出那些不再用到的内存(变量),然后释放

垃圾回收机制有两种方法:标记清楚(常用)、引用计数

标记清楚:当变量进入环境时(例如在函数中声明一个变量),就将这个变量声明标记为“进入环境”,从逻辑上讲,不能释放进入环境的变量所占的内存,因为进入环境就意味着有可能用到它们,当变量离开环境时,就将变量标记为“离开环境(销毁)”。垃圾收集器会给变量添加这些标记操作,最后垃圾收集器就会销毁那些带有离开环境(销毁)的变量并回收它们所占用的内存空间。

MVVM的理解

M是Model,主要负责数据与业务逻辑;V是View,主要 负责将数据展示;VM是ViewModel,主要是监控Model的数据改变并 控制视图的更新,处理用户交互操作。

Model和View并无直接关联,而是通过ViewModel来进行联系的,Model和ViewModel之间有着双向数据绑定的联系,因此当Model中的数据改变时会触发View层的刷新,View中由于用户交互操作而改变的数据也会在Model中同步。

作用域和作用域链的理解

作用域分为全局作用域和函数作用域。全局作用域是代码在程序的任何地方都能被访问,函数作用域是在固定的代码片段才能被访问。

作用域有上下级关系,上下级关系的确定就看函数是在哪个作用域下创建的。如fn作用域下创建了bar函数,那么“fn作用域”就是“bar作用域”的上级。一般情况下,变量取值到 创建 这个变量 的函数的作用域中取值。但是如果在当前作用域中没有查到值,就会向上级作用域去查,直到查到全局作用域,这么一个查找过程形成的链条就叫做作用域链。

跨域

当请求的url跟当前的页面的url的协议、域名、端口三个中任意一个不用时即是跨域。

内存泄漏

程序运行的时候需要内存,只要程序需要,操作系统就要不断的提供内存,如果是持续运行的程序,内存占用的越来越高,如果没有及时的释放内存,轻则影响性能,重则导致程序崩溃。不再用到的内存没有及时释放就叫内存泄漏。

Vue组件的data必须为函数的原因

只有函数{}构成作用域,对象的{}以及if{}都不构成作用域,data是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,不会导致修改实例一个属性时另外一个实例的属性也跟着改变。

<!DOCTYPE >的作用

DOCTYPE是document type (文档类型) 的缩写。<!DOCTYPE >声明位于文档的最前面,处于标签之前,它不是html标签。主要作用是告诉浏览器的解析器使用哪种HTML规范或者XHTML规范来解析页面。如果<!DOCTYPE>不存在或者形式不正确会导致HTML或XHTML文档在不同的浏览器有不同的渲染方式。为了提高浏览器的兼容性就要重视<!DOCTYPE>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值