前端面试提的一些问题(西安)

1.watch跟computed的区别

功能上:computed是计算属性,watch是监听一个值的变化,然后执行对应的回调。

是否调用缓存:computed中的函数所依赖的属性没有发生变化,那么调用当前的函数的时候会从缓存中读取,而watch在每次监听的值发生变化的时候都会执行回调。

是否调用return:computed中的函数必须要用return返回,watch中的函数不是必须要用return。

computed的实现

watch的实现

2.箭头函数

1、对 this 的关联。函数内置 this 的值,取决于 箭头函数在哪儿定义,而非箭头函数执行的上下文环境。2 、new 不可用。箭头函数不能使用 new 关键字来实例化对象,不然会报错。3、this 不可变。函数内置 this 不可变,在函数体内整个执行环境中为常量。4、没有arguments对象。更不能通过arguments对象访问传入参数。只能使用显式命名或其他ES6新特性来完成。(面试主要答了个this指向)

3.问哪些方法可以判断变量类型

  • 一、使用typeof判断变量类型

  • 二、使用instanceof判断变量的类型

  • 三、使用constructor判断变量的类型

  • 四、使用Object.prototype.toString.call判断变量的类型

  • 五、使用jquery中$.type判断变量的类型。

    在JS中,有 5 种基本数据类型和 1 种复杂数据类型.基本数据类型有:Undefined, Null, Boolean, Number和String;复杂数据类型是Object,Object中还细分了很多具体的类型,比如:Array, Function, Date等等。

    1. 一般简单的使用 typeof 或 instanceof 检测(这两种检测不完全准确)

    2. 原生js中的 Object.prototype.toString.call 或 jquery中的 $.type 检测(完全准确)

4.cookie,localStorage, sessionStorage三者区别

1、cookie始终在同源的http请求中携带,即使不需要,cookie在浏览器和服务器中来回传递。而localStorage和sessionStora仅仅在本地存储,不会好服务器通信,也不会自动把数据发送给服务器。

2、存储大小不同,cookie为4kb左右;localStorage, sessionStorage可以达到5M 数据有效期不同,sessionStorage仅在同源窗口中有效,关闭窗口就消失了,cookie可以设置过期时间,localStorage长期有效

3、localStorage, sessionStorage有现成的API, cookie需要程序员手动封装

5.生命周期(钩子函数)

这个自行查阅吧

6.js的闭包

1什么是闭包: 闭包是包含了被引用变量的一个容器(不是js对象) 被内部函数对象引用着 内部函数引用外部函数的局部变量的一个引用关系 ,这个关系是用一个容器对象去描述的 在内部函数对象上2产生闭包的条件 1函数嵌套 2 内部函数引用外部函数的局部变量 3 调用外部函数(外部函数要调用,内部函数要定义) 4什么时候生成闭包? 执行内部函数定义,也就是创建内部函数对象 5闭包的作用: 1 延长外部函数局部变量的生命周期 2 让函数外部能间接操作内部的局部变量

如何用: 1 外部函数返回内部函数的方法体,用一个变量去接收 永久闭包 2 定时器

6 区别闭包的三个操作: 产生闭包: 内部函数对象创建时产生, 包含那个被引用的变量的容器(不是js对象) 使用闭包:执行内部函数 释放闭包:让内部函数对象成为垃圾对象 断开指向它的所有引用

7 闭包的优缺点: 优点: 延长局部变量的生命周期 让函数外部能间接操作内部的局部变量 缺点: 闭包是不会自己销毁的,形成内存泄漏,泄漏的厉害了会造成内存溢出 闭包不能滥用 不用的时候记得销毁

8 闭包的应用? 具体功能说: 可以说根据id删除品牌(需要显示确定框) 大的说: 我们定义的很多模块在编译后的代码中都存在闭包

7.mvvm的原理

  • MVVM模式Model-View-ViewModel模式,是一种软件架构模式,MVVMMVC的增强版,萌芽于2005年微软推出的基于window的用户界面框架WPF。软件架构模式: MVCMVVMMVP

    优点:1、分离视图(View)和模型(Model),降低代码耦合,提高视图或者逻辑的复用性

    2、提高可测试性,因为mvvm模式让视图和model层相互独立开来,所以可以让输入和输出在大致的可控范围内。

    3、自动更新dom: 利用双向绑定的原理,可以让数据更新后视图也自动更新,不用再让dom操作和逻辑操作混合在一起,让开发者从繁琐的手动dom中解散。

    缺点:

    1、Bug很难被调试,因为使用了双向绑定的模式,页面出现异常的时候,很难判定到底是view层的问题还是model层的代码。数据绑定使得一个位置的bug被传递到别的位置,很难定位到出问题的原始地方。而且在视图中,大部门都是采用指令式,很难debgger;2、长期持久,不释放内容,可能会造成性能开销: 一个大的模块中,model也会很大,虽然保证了数据的一致性,可能不释放内存会造成更多的内存;3、对于大型的图形应用程序,状态多,viewModel的构建和维护的成本都会很高。

    8.微信支付和支付宝支付

    请自行查阅

    9.图片懒加载

    还没有加载得到目标图片时(图片没回来之前) 先显示loading图片 (这个图片在本地)在可视区域外显示本地的loading图做法:下载vue-lazyload引入并配置loading图片main.js里面注入使用 v-lazy='图片路径'

    10 .然后就是项目问题 比如说项目突出的技术点 、地图的应用、封装那些组件、动画、等等吧

    最后

    感谢阅读,如有不足之处,欢迎在评论区讨论! 转载请带链接 谢谢

猜你喜欢

转载自blog.csdn.net/weixin_60172238/article/details/130864303
今日推荐