縮略圖實現原理
ES6中的super做了什么
-
super類似於ES5語法中的call繼承
ES6中class的靜態屬性和靜態方法
-
不會被實例繼承
-
只能直接通過類來調用
-
可以被子類繼承
-
可以從super對象上調用
bind的具體原理
二面:
get和post區別
-
在規范的應用場景上說,Get 多用於無副作用,冪等的場景,例如搜索關鍵字。Post 多用於副作用,不冪等的場景,例如注冊。
-
在技術上說:
-
Get 請求能緩存,Post 不能
-
Post 相對 Get 安全一點點,因為Get 請求都包含在 URL 里(當然你想寫到
body
里也是可以的),且會被瀏覽器保存歷史紀錄。Post 不會,但是在抓包的情況下都是一樣的。 -
URL有長度限制,會影響 Get 請求,但是這個長度限制是瀏覽器規定的,不是 RFC 規定的
-
Post 支持更多的編碼類型且不對數據類型限制
-
插入排序幾重循環
function insertion(array) {
checkArray(array);
for (let i = 1; i < array.length; i++) {
for (let j = i - 1; j >= 0 && array[j] > array[j + 1]; j--)
swap(array, j, j + 1);
}
return array;
}
csrf攻擊應對方案
-
SameSite
-
驗證Referer
-
Token
封裝子組件
內存泄漏
1、意外的全局變量
js對未聲明變量會在全局最高對象上創建它的引用,(是以屬性存在的,而不是變量),如果在瀏覽器上就是window對象,如果在node環境下就是global;如果未聲明的變量緩存大量的數據,它可能只有在頁面被刷新或者被關閉的時候才會釋放內存,這樣就造成了內存意外泄漏。
2、console.log
作為前端平時使用console.log在控制台打出相對應的信息可以說是非常常見。但如果沒有去掉console.log可能會存在內存泄漏。因為在代碼運行之后需要在開發工具能查看對象信息,所以傳遞給console.log的對象是不能被垃圾回收。
3、閉包
首先閉包是一個函數A返回一個內聯的函數B,即使A函數執行完,函數B也可以訪問函數A里面的變量,這就是一個簡單的閉包。本質上閉包是將函數內部和外部連接起來的一座橋梁。
4、DOM泄漏
瀏覽器中DOM和js采用的是不一樣的引擎,DOM采用的是渲染引擎,而js采用的是v8引擎,所以在用js操作DOM時會比較耗費性能,因為他們需要橋來鏈接他們。為了減少DOM的操作,我們一般將常用的DOM采用變量引用的方式會將其緩存在當前環境。如果在進行一些刪除、更新操作之后,可能會忘記釋放已經緩存的DOM
5、被遺忘的timers