1.常用的ES6语法
这个可以根据自己的开发经验回答,常用的就是:let和const、箭头函数、promise、解构赋值、map、import、模板字符串、函数默认参数、object.create()、module.exports、class定义类、
2.JSON字符串和对象之间的互相转换
JSON对象转字符串:JSON.stringify()
JSON字符串转对象:JSON.parse()
3.Generator和Promise原理
4.写一个方法实现 12345678 变成 12,345,678
5.写一个方法实现 1348888888 变成 134****8888
6.CSS预处理器和后处理器
css预处理器是一种编程语言,是在css的基础上增加了一些编程特性,将CSS作为目标生成文件,常用的有Less、Sass、stylus
css后处理器是对css进行处理,并最终生成css预处理器,它属于广义上的css预处理器,例如:css压缩工具(clean-css),Autoprefixer(以Can I Use上的浏览器支持数据为基础,自动处理兼容问题)
7.数组都有哪些遍历方法以及特性
- forEach
- map
- filter
- some
- every
- for of
- reduce
- for、for...in、for...of、forEach的区别
for循环是我们在遍历时常用的方法,用来遍历数组
for...in不仅能遍历数组,还能遍历对象,但是在遍历对象时,输出顺序不固定,与被遍历的对象中属性的顺序无关;使用for in遍历不仅能遍历对象上的属性,还能遍历原型上的属性,所以不适合遍历数组;for in十分适合遍历稀疏数组,for循环遍历次数是数组长度,er使用for in的话,只遍历有值的长度
forEach 为遍历对象的每一个有效元素提供一个回调函数,参数依次为:当前值,当前值的索引值,对象本身;该方法也能遍历原型上的属性
for...of(ES6)用来遍历数组及类数组,解决了ES5中三种遍历的缺陷:
forEach 不能break 或者return;for-in 的缺点更加明显。它不仅遍历了数组中的元素,还遍历了自定义属性,甚至连原型链上的属性都被访问到。
虽然for...of解决了一些缺陷,但是他不能遍历普通对象,普通对象使用for...in遍历
- map方法返回一个新数组,数组中每一个元素为原数组元素调用回调函数处理后的结果
特点:不会改变原数组;不会检测空数组
- filter是将数组中不符合条件的元素去掉,并返回一个新数组
var arr = [1,2,3,4,5,6,7];
var newArr = arr.filter((item,index,array)=>{
return(index>3);
});
console.log(newArr);//[5,6,7]
- some是对数组中的数组进行判断,一项为true,则返回true,类似于或运算;every则类似于与运算
- reduce用来计算数组各项数值之和;
let arr = [1, 2, 3, 4],
sum = arr.reduce((prev, curr, index, arr) => {
return prev + curr;
});
;
console.log(sum); // 10
1- prev 第一项的值或者是上一次的叠加的结果值(这个值可以手动设置)
2- curr 当前会参与叠加的项
3- index 当前的索引
4- 数组本身
8.为什么箭头函数不能作为构造函数
- 匿名函数不能作为构造函数
- this指向问题,箭头函数只能指向定义时的上下文
- 不绑定arguments,取而代之用rest参数
- 没有原型属性
- 箭头函数不能当做Generator函数,不能使用yield关键字
9.nodejs中间件
10.能否手写一些简单的排序算法
11.如何将两个升序的数组合并成一个升序的数组并返回
12.call、apply、bind有什么区别
13.如何实现只能服务端修改cookie而浏览器端禁止修改cookie
了解HttpOnly
14.如何解决跨域
常用cors和jsonp,但是jsonp只支持get请求
15.如何判断一个值的类型是数组还是对象
Object.prototype.toString.call(arr);
可以通过instanceof、constructor