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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章