js易错的知识点

 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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值