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