he-maoke

导航

day43 项目卖座网及面试题复习

二阶段面试题:

1.new操作符做了什么

 

 2.闭包是什么

总结 所有回调函数 都是闭包进行虫洞穿越  所有的回调函数都是用了闭包闭包的虫洞穿越技术 
闭包就像大海上有海啸 只是JS的一个现象 闭包这个词很晦涩 所以很多人敬而远之
闭包就是能够读取其他函数内部变量的函数
 
由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成”定义在一个函数内部的函数”。
 
闭包优点 1、闭包是一个有状态(不消失的私有数据)的函数。
 
2、闭包是一个有记忆的函数。V8底层引擎 不敢随意垃圾清理闭包 因为经常有函数连接外部变量!!!
 
3、闭包相当于一个只有一个方法的紧凑对象
4、最重要的是极大了拓宽了函数变量的作用域
正常的函数作用域就是 平级调用 里面的调用外面的 显得JS太笨了 闭包
极大的增加函数和变量的自由度 拓宽作用域链
因为没有 闭包 常规的做法 只能里面的调用外面的 外面的调用不了里面的
闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中
 
重用变量又不能造成全局污染
 
3.深拷贝
1.JSON.parse(JSON.stringify(object))
2.jQuery.extend
3.递归
4.lodash
4.BFC 是什么
Formatting context(格式化上下文) 
作用:
可以包含浮动元素,不被浮动元素覆盖,可不让父元素的margin折叠
 
 

5.有没有封装过组件 说下封装过程 和思路?
 请说下封装 vue 组件的过程
1. 建立组件的模板,先把架子搭起来,写写样式,考虑好组件的基本逻辑。(os:先思考1小时,写代码10分钟 )
2. 准备好组件的数据输入。即分析好逻辑,定好 props 里面的数据、类型。考虑好组件需要什么类型的插槽 考虑以下是否需要sync修饰符 是否需要来回的回调函数传递 。
3. 准备好组件的数据输出。即根据组件逻辑,做好要暴露出来的方法。自我测试 做好之后交给同事进行引入
4. 封装完毕了,直接调用即可

 

6浅谈web性能优化

1.减少dom操作减少重绘和回流

2.减少http请求

3.尽量使用link引入样式

4.可以对页面的静态资源进行压缩

5.可以对网页资源进行缓存

7.如何理解h5的语义化
⽤正确的标签做正确的事情!
HTML 语义化就是让⻚⾯的内容结构化,便于对浏览器、搜索引擎解析;
在没有样式 CSS 情况下也以⼀种⽂档格式显示,并且是容易阅读的。
搜索引擎的爬⾍依赖于标记来确定上下⽂和各个关键字的权重,利于 SEO 。
使阅读源代码的⼈对⽹站更容易将⽹站分块,便于阅读维护理解

8.ES6有哪些新增的特性
bind ,apply,call 改变this指向

数组增强:

Array.of ,from,findindex

字符串增强:

string.include,startwith,endwith,repeat,

函数增强:

函数默认值

箭头函数

对象增强:
object.key,value,entire,is,assign

对象遍历for in

数组遍历for of

解构,扩展运算符

class 类

set 和 map的数据解构

9.es7的新增特性

10.什么是jsonp

是一种非官方解决跨域的方案
利用sricpt标签没有跨域限制的漏洞 标签指向一个需要访问的地址并提供一个回调函数来接收数据

11.如何理解vue是一个渐进式的框架

 

ue的核心的功能,是一个视图模板引擎,但这不是说Vue就不能成为一个框架。如下图所示,这里包含了Vue的所有部件,在声明式渲染(视图模板引擎)的基础上,我们可以通过添加组件系统、客户端路由、大规模状态管理来构建一个完整的框架。更重要的是,这些功能相互独立,你可以在核心功能的基础上任意选用其他的部件,不一定要全部整合在一起。可以看到,所说的“渐进式”,其实就是Vue的使用方式,同时也体现了Vue的设计的理念

 

12.JS的严格模式和非严格模式有什么区别
变量命名必须要有修饰符 函数内部this不指向window 函数内部的arguments形参不同步 禁止在非函数代码块内声明函数 禁止八进制

13.vue中keepalive有什么作用
用于缓存组件,如果该组件还会再启用,那么可以使用keep-alive进行组件缓存和优化,提高性能,缓存的组件不需要销毁,也不需要再创建

14.对比jquery和vue的区别

posted on 2022-08-03 22:37  hmkyj  阅读(42)  评论(0编辑  收藏  举报