1、数组去重的方法
ES6语法var arr = [1,2,3,1,1,6,4,8] var newArr = [...new Set(arr)] console.log(newArr);
2、两个数组的合并
ES6语法展开运算符var arr = [...arr1,...arr2]
##3、vuex
state:{}:唯一公共数据源,不允许直接修改里面的值,通过this.store.commit('对应的函数名')
actions:{}:如果通过异步操作来变更数据,必须通过Action而不是Mutation,通过 this.$store.dispatch('对应的函数名')
getters:{}:相当于vue中的计算属性
4、var let const的显著区别
答:const定义的变量不可以修改,而且必须是初始化 var定义的变量可以修改。如果不初始化会输出undefined,不会报错 let是块级作用域,函数内部使用let定义后,对函数外部无影响
5、js的基本数据类型
答:undefined boolean string number
复杂数据类型: 答:object
6、前端项目优化,从工程化,渲染,加载时分析
打包文件中的app.js文件放入cdn,加快页面首次加载速度 提取公共方法,减少js代码量 vue-router路由全部改成懒加载路由,该页面被点开时才加载该页面.vue组件,提高首页加载速度。
7、git常用命令 版本回退命令
git reset
8、水平居中
1.margin: 0 auto;水平 2.text-align: center;水平 3.行高,垂直 4.表格,center,middle;水平垂直 5.display:table-cell;模拟表格,all 6.绝对定位,50%减自身宽高 7.绝对定位,上下左右全0,margin:auto 8.绝对定位加相对定位。不需要知道宽高 9.IE6,IE7:给父元素设一个font-size:高度/1.14,vertical-align:middle
9,纯css实现三角形
// 通过设置border .box { width:0px; height:0px;
border-top:50px solid rgba(0,0,0,0);
border-right:50px solid rgba(0,0,0,0);
border-bottom:50px solid green;
border-left:50px solid rgba(0,0,0,0);
}
10、 高度不定,宽100%,内一div高不确定,如何实现垂直居中?
verticle-align: middle; 绝对定位50%加translateY(-50%) 绝对定位,上下左右全0,margin:auto
11、 Promise优缺点
优点: 解决回调地狱, 对异步任务写法更标准化与简洁化 无法取消Promise,一旦新建它就会立即执行,无法中途取消
12、闭包
函数嵌套函数,内部函数使用外部函数的局部变量 延伸了作用域的范围,让局部变量常驻内存
13、for in 和 for of区别
for in遍历数组会遍历到数组原型上的属性和方法, 更适合遍历对象 使用for of可以成功遍历数组的值, 而不是索引, 不会遍历原型
14、localStorage 与 sessionStorage
共同点: 都保存在浏览器端, 且同源 localStorage 与 sessionStorage 统称webStorage,保存在浏览器,不参与服务器通信,大小为5M 生命周期不同: localStorage永久保存, sessionStorage当前会话, 都可手动清除 作用域不同: 不同浏览器不共享local和session, 不同会话不共享session Cookie: 设置的过期时间前一直有效, 大小4K.有个数限制, 各浏览器不同, 一般为20个.携带在HTTP头中, 过多会有性能问题.可自己封装, 也可用原生
15浏览器事件机制中事件触发三个阶段
事件捕获阶段: 从dom树节点往下找到目标节点, 不会触发函数 事件目标处理函数: 到达目标节点 事件冒泡: 最后从目标节点往顶层元素传递, 通常函数在此阶段执行. addEventListener第三个参数默认false(冒泡阶段执行),true(捕获阶段执行). 阻止冒泡见以上方法
15什么是跨域?为什么浏览器要使用同源策略?你有几种方式可以解决跨域问题?了解预检请求嘛?
跨域是指一个域下的文档或脚本试图去请求另一个域下的资源 防止XSS、CSFR等攻击, 协议+域名+端口不同 jsonp; 跨域资源共享(CORS)(Access control); 服务器正向代理等
16、如何判断js运行在浏览器中还是node中?
判断有无全局对象global和window
17、http和https
http: 最广泛网络协议,BS模型,浏览器高效。 https: 安全版,通过SSL加密,加密传输,身份认证,密钥 https相对于http加入了ssl层, 加密传输, 身份认证;
18、登录后,前端做了哪些工作,如何得知已登录
前端存放服务端下发的cookie, 简单说就是写一个字段在cookie中表明已登录, 并设置失效日期 或使用后端返回的token, 每次ajax请求将token携带在请求头中, 这也是防范csrf的手段之一
19、 http状态码
1**: 服务器收到请求, 需请求者进一步操作 2**: 请求成功 3**: 重定向, 资源被转移到其他URL了 4**: 客户端错误, 请求语法错误或没有找到相应资源 5**: 服务端错误, server error 301: 资源(网页等)被永久转移到其他URL, 返回值中包含新的URL, 浏览器会自动定向到新URL 302: 临时转移. 客户端应访问原有URL 304: Not Modified. 指定日期后未修改, 不返回资源 403: 服务器拒绝执行请求 404: 请求的资源(网页等)不存在 500: 内部服务器错误
20、vue父子组件传递参数
父 -->子: 通过props 子 -->父: 通过 ?refs 或 $emit
21、vue3.0的更新和defineProperty优化
放弃 Object.defineProperty ,使用更快的原生 Proxy (访问对象拦截器, 也成代理器) 提速, 降低内存使用, Tree-shaking更友好 支持IE11等 使用Typescript
22、你是如何将一个 HTML 元素添加到 DOM 树中的?
可以用 jQuery 方法 appendTo() 将一个 HTML 元素添加到 DOM 树中
23、$(this) 和 this 关键字在 jQuery 中有何不同?
$(this) 返回一个 jQuery 对象 而 this 代表当前元素,
24、vue里ref ($refs)用法
ref 有三种用法: 1、ref 加在普通的元素上,用this.ref.name 获取到的是dom元素 2、ref 加在子组件上,用this.ref.name 获取到的是组件实例,可以使用组件的所有方法。 3、如何利用 v-for 和 ref 获取一组数组或者dom 节点
25、call和.apply的区别是什么?
call是调用一个对象的一个方法 apply是应用某一对象的一个方法
26、se6转es5怎么转
es6转es5,插件,npm install babel-preset-es2015 babel cli
27、vue响应原理是什么
Object.defineProperty
28、less特性
less是一门 CSS 预处理语言的一种,它使用类似CSS的语法,它扩充了 CSS 语言,为CSS赋予了动态语言的特性。
29、请说出你可以传递给jQuery方法的四种不同值。
选择器(字符串),HTML(字符串),回调函数,HTML元素,对象,数组,元素数组,jQuery对象等。
30、请指出
.fn的区别,或者说出$.fn的用途。
.fn.extend(obj);给JQUERY对象添加方法。
2.
.fn=$.prototype;
31、es6中的map
map的提出是为了解决js中object中键只能是字符串的限制map的键可以是各种类型的值都可以当作键 const m = new Map();
32、new的四步骤
new构造函数在内存中创建一个空的对象; this指向这个空对象; 执行构造函数里面的代码,给构造函数添加属性和方法; 返回这个对象
33、移动端适配
安装 lib-flexible 与 postcss-pxtorem 在main.js文件引入 lib-flexible 进行postcss配置,如单独postcss.config.js问价在则在文件内设置如没有可在package.json文件内配置
34、http工作原理
HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于TCP/IP连接的
35、es6有哪些新特性
1、let和const 2、箭头函数 3、模板字符串 4、promise对象
36、c3有哪些新特性
1、颜色 2文字阴影 3、边框 4、过渡 5、背景