1、 Boolean(false) 和 new Boolean(false) 不一样,后者是一个对象
var x = new Boolean(false); if (x) { alert('hi'); } //会输出hi
2、call 和 apply 的区别
let arr1 = [1, 2, 19, 6]; //例子:求数组中的最值
console.log(Math.max.call(null, 1,2,19,6)); // 19
console.log(Math.max.call(null, arr1)); // NaN
console.log(Math.max.apply(null, arr1)); // 19 直接可以用arr1传递进去
总结:传参不同,第二个参数不一样,call是把参数列出来
3、typeof 可以返回的类型为:number、string、boolean、undefined、null、object、function
4、for (var i=0; i< 5; i++) {
setTimeout(function(){
console.log(i + '')
})
} //输出结果 00000
5、常见的请求头的响应头
1)请求
6、前端网络攻击
1). XXS跨站脚本攻击(cross site scripting)
a.通过script
b.append(html eval) 注入代码
c.通过img标签
d.通过url(在通过url获取信息时时,建议由后端进行获取,再由前端进行转义)
2). CSRF攻击 (跨站请求伪造)
a.你在一个网站登陆过所以由cookies信息
b.你在访问别的网站进行操作时,这个网站向你之前访问过的网站发送请求
解决办法:
a.增加token验证;因为cookie发送请求会自动添加,然而token不会,这样就避免了攻击
b.referer验证;页面来源的判断。
3).网络劫持攻击
我们在访问网站的时候,不是一次性通过网站到达服务器,中间会经过很多层代理。所以我们在外连接wifi的时候,如果这个wifi是黑客建立的,黑客可以通过wifi获取用户信息;
解决办法: 对网站进行https加密。
4).控制台代码注入
5).钓鱼类网站
7、闭包
function fun(n,o) {
console.log(o)
return {
fun:function(m){
return fun(m,n);
}
};
}
var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined,?,?,?
var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,?,?
var c = fun(0).fun(1); c.fun(2); c.fun(3);//undefined,?,?,?
//问:三行a,b,c的输出分别是什么?
//a: undefined,0,0,0
//b: undefined,0,1,2
//c: undefined,0,1,1