1.什么是闭包?
闭包是一个可以读取其他函数内部变量的函数;本质上是将函数内部和函数外部嫁接起来的桥梁。优点是能读取函数内部的变量,能保证这些变量永远保存在内存中。缺点:一是使用不当时会导致内存泄露,解决方法是在退出函数之前,将不使用的局部变量全部删除,二是会改变父级的值。
2.如何解决js的数组去重。(百度上面有很多种,可以看看)
数组递归去重
Array.prototype.distinct =
function
(){
var
arr =
this
,
len = arr.length;
arr.sort(
function
(a,b){
//对数组进行排序才能方便比较
return
a - b;
})
function
loop(index){
if
(index >= 1){
if
(arr[index] === arr[index-1]){
arr.splice(index,1);
}
loop(index - 1);
//递归loop函数进行去重
}
}
loop(len-1);
return
arr;
};
var
a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,56,45,56];
var
b = a.distinct();
console.log(b.toString());
//1,2,3,4,5,6,45,56
3.如何优化前端性能?
(1).减少http请求(css雪碧图)
(2).css放在顶部,js放在底部
(3).合并请求
4.ajax请求数据的方法?
(1)原生态方法
1.创建XMLHTTPRequest对象
2.使用open方法设置和服务器的交互信息
3.设置发送的数据,开始和服务器端交互
4.注册事件
5.更新界面
get请求:
//步骤一:创建异步对象 var ajax = new XMLHttpRequest(); //步骤二:设置请求的url参数,参数一是请求的类型,参数二是请求的url,可以带参数,动态的传递参数starName到服务端 ajax.open('get','getStar.php?starName='+name); //步骤三:发送请求 ajax.send(); //步骤四:注册事件 onreadystatechange 状态改变就会调用 ajax.onreadystatechange = function () {
if (ajax.readyState==4 &&ajax.status==200) { //步骤五 如果能够进到这个判断 说明 数据 完美的回来了,并且请求的页面是存在的console.log(xml.responseText);//输入相应的内容
}
}
post请求:
//创建异步对象 var xhr = new XMLHttpRequest(); //设置请求的类型及url //post请求一定要添加请求头才行不然会报错 xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xhr.open('post', '02.post.php' ); //发送请求 xhr.send('name=fox&age=18'); xhr.onreadystatechange = function () { // 这步为判断服务器是否正确响应 if (xhr.readyState == 4 && xhr.status == 200) { console.log(xhr.responseText); } };
5.事件代理:
事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。
6.es6十大特性:
- Default Parameters(默认参数) in ES6
- Template Literals (模板文本)in ES6
- Multi-line Strings (多行字符串)in ES6
- Destructuring Assignment (解构赋值)in ES6
- Enhanced Object Literals (增强的对象文本)in ES6
- Arrow Functions (箭头函数)in ES6
- Promises in ES6
- Block-Scoped Constructs Let and Const(块作用域构造Let and Const)
- Classes(类) in ES6
- Modules(模块) in ES6
7.cookie和session的区别和用法
cookie和session都是用来跟踪浏览器用户身份的会话方式。
cookie与session的区别是, cookie数据保存在客户端,session数据保存在服务器端。
session是放在服务器上的,过期与否取决于服务期的设定,cookie是存在客户端的,过去与否可以在cookie生成的时候设置进去。
(1)、cookie数据存放在客户的浏览器上,
session数据放在服务器上
(2)、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session
(3)、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE
(4)、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
(1)、cookie数据存放在客户的浏览器上,
session数据放在服务器上
(2)、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session
(3)、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE
(4)、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
觉得我的答案不完整的话,可以自行查阅百度~