1. var let const 的區別,以及變數提公升,函式提公升
1.不存在塊作用域2.可以多次宣告(覆蓋)
3.存在變數提公升:當var a = 1;時候,會先在作用域的最頂端,var a;然後在var a = 1;的位置給a賦值
1.存在塊作用域2.async/await 原理經典例題:
for迴圈給多個dom新增時間,輸出for迴圈的角標i,如果用var宣告,因為沒有塊作用域,var會變數提公升到外層作用域最頂端,而多次i賦值,最後只儲存了最後一次的值,改成let可以解決這個問題(這就是強行解釋,具體為什麼let可以解決還需要好好看看let)
2.不可以多次宣告
包括
function a() {};
存在後不能let const a變數提公升和函式提公升排序的問題需要理解
3.主程序,巨集任務,微任務
巨集任務:macrotask 包括:settimeout、setinterval、postmessage等。
微任務:microtask 包括:promise.then、await後面的**。
事件執行順序:
1.先執行主程序中同步的**,promise中的**為同步**
2.主程序**執行完畢後執行微任務中的**,從上到下乙個乙個放到主程序中執行。
3.微任務執行完畢之後從上到下把巨集任務中的**放到主程序中執行,如果這期間產生微任務,則執行完當前巨集任務後重新執行微任務佇列,然後繼續回到執行巨集任務佇列
4.重複 2,3
方法一 postmessage
// top 是目標iframe,可以使iframe的name屬性;target是目標iframe的網域名稱
top.postmessage('資料', target);
// e.currenttarget.parent是他的父iframe
window.addeventlistener('message', (e) => );
postmessage優點
1.可以跨域傳送訊息
postmessage缺點
1.低版本瀏覽器不支援
方法二 通過呼叫目標iframe的方法
// 父傳子
target.window.fun()
// 子傳父
window.parent.window.fun()
優點缺點
1.不能跨域
2.必須等頁面載入完畢才能呼叫
http常用的method
簡單的請求
head,get, post
get:
1.引數可見
2.可以快取
3.會生成歷史記錄
4.長度有限制
post:
1.引數不可見
2.不可以快取
3.不會生成歷史記錄
4.不限制長度
5.資料型別不限制
6.會先提交head請求,得到100響應後才能繼續提交
head:
和get類似,但是不會返回響應主體
預檢請求
options: 主要目的是獲取伺服器允許的請求方式
其他請求
put和patch
delete:刪除資源
tcp和udp(oicq,nds)區別
1.tcp面向連線,必須先建立連線;udp傳送資料之前不需要連線
2.tcp是可靠的鏈結,不會丟失重複,按順序到達;udp不保證可靠
3.udp效率更高,可以實現實時傳輸和廣播通訊
4.tcp是點對點,udp都可以
5.tcp對系統資源有要求,udp要求相對較小
tcp過程
1.建立socket socket();
2.設定socket屬性,setsocketopt() 可選
3.繫結 ip位址,埠號
4.開啟監聽 listen()
5.接收客戶端的鏈結, accept()
6.收發資料 send()
7.關閉連線
8.關閉監聽
udp過程
1.建立socket
2.設定socket屬性
3.繫結ip,埠到socket上 可選
4.迴圈的接收資料
5.關閉連線
websocket和socket
socket其實是控制傳輸的介面,底層是操作tcp或者udp
websocket是應用層的協議,保持連線不斷開
node伺服器優缺點
優點:事件驅動,是的輸入輸出效能很高
缺點:cpu計算差,比如做很多計算操作,**執行效率要求高,所以用底層的語言來做,比如c
io密集型:需要處理比較多的任務
解釋型語言和編譯型語言
require和import
require是commonjs規範,執行時候載入
import是es6規範,是編譯時候載入
hash和history
監聽hash window.onhashchange
監聽history window.onreplacestate
前端面試 問題總結
1 普通函式 箭頭函式,this的指向 乙個事件中,這兩個函式this的指向 2 處理scroll事件,來維護前端的效能 滾動會頻發觸發scroll事件,所以設定乙個時間,規定在此時間內scroll時間被觸發的次數,使用settimeout 注意重點需要在settimeout之前清除上一次返回的id...
9 20 前端面試問題總結
vue已經單獨寫出來了 css畫三角形 主要就是用border來畫三角形 這裡要用到偽類 nth child,平時經常遇到的偽類是 hover,如果對偽類還不熟悉的話請看 效果圖 只要弄清楚position relative與border就可以了,如果想要得到題目中給的效果,只需要每個span的to...
前端面試問題
1 對mvc的理解 簡單來說,mvc是一種流行的程式架構。mvc是 模型 model 檢視 view 控制器 control 的英文首字母的縮寫,核心思想是 檢視和使用者互動 通過事件導致控制器改變 控制器改變導致模型改變 或者控制器同時改變兩者 模型改變 導致檢視改變 或者檢視改變 潛在的從模型裡...