1. var let const 的區(qū)別,以及變量提升千扶,函數(shù)提升
- var
1.不存在塊作用域
2.可以多次聲明(覆蓋)
3.存在變量提升:當(dāng)var a = 1;時候睁本,會先在作用域的最頂端甸祭,var a;然后在var a = 1;的位置給a賦值
- let const
1.存在塊作用域
經(jīng)典例題:
for循環(huán)給多個dom添加時間,輸出for循環(huán)的角標i,如果用var聲明,因為沒有塊作用域,var會變量提升到外層作用域最頂端,而多次i賦值拆又,最后只保存了最后一次的值,改成let可以解決這個問題(這就是強行解釋栏账,具體為什么let可以解決還需要好好看看let)
2.不可以多次聲明
包括function a() {};
存在后不能let const a
變量提升和函數(shù)提升排序的問題需要理解
2.async/await 原理
3.主進程遏乔,宏任務(wù),微任務(wù)
宏任務(wù):macrotask 包括:setTimeout发笔、setInterval、postMessage等凉翻。
微任務(wù):microtask 包括:Promise.then了讨、await后面的代碼。
事件執(zhí)行順序:
1.先執(zhí)行主進程中同步的代碼制轰,promise中的代碼為同步代碼
2.主進程代碼執(zhí)行完畢后執(zhí)行微任務(wù)中的代碼前计,從上到下一個一個放到主進程中執(zhí)行。
3.微任務(wù)執(zhí)行完畢之后從上到下把宏任務(wù)中的代碼放到主進程中執(zhí)行垃杖,如果這期間產(chǎn)生微任務(wù)男杈,則執(zhí)行完當(dāng)前宏任務(wù)后重新執(zhí)行微任務(wù)隊列,然后繼續(xù)回到執(zhí)行宏任務(wù)隊列
4.重復(fù) 2调俘,3
3.iframe通信的方法和優(yōu)缺點伶棒,父子通信,父子跨域通信
方法一 postMessage
// top 是目標iframe彩库,可以使iframe的name屬性肤无;target是目標iframe的域名
top.postMessage('數(shù)據(jù)', target);
// e.currentTarget.parent是他的父iframe
window.addEventListener('message', (e) => {
// 發(fā)送回去一條消息
e.currentTarget.parent.postMessage('消息', '*')
});
postMessage優(yōu)點
1.可以跨域發(fā)送消息
postMessage缺點
1.低版本瀏覽器不支持
方法二 通過調(diào)用目標iframe的方法
// 父傳子
target.window.fun()
// 子傳父
window.parent.window.fun()
優(yōu)點
缺點
1.不能跨域
2.必須等頁面加載完畢才能調(diào)用
HTTP常用的Method
簡單的請求
HEAD,GET, POST
GET:
1.參數(shù)可見
2.可以緩存
3.會生成歷史記錄
4.長度有限制
POST:
1.參數(shù)不可見
2.不可以緩存
3.不會生成歷史記錄
4.不限制長度
5.數(shù)據(jù)類型不限制
6.會先提交HEAD請求骇钦,得到100響應(yīng)后才能繼續(xù)提交
HEAD:
和GET類似宛渐,但是不會返回響應(yīng)主體
特點
1.沒有自定義的報文頭
2.MIME Type in text/plain、multipart/form-data眯搭、application/x-www-form-urlencoded
預(yù)檢請求
OPTIONS: 主要目的是獲取服務(wù)器允許的請求方式
特點
1.自定義請求頭信息
2.MIME Type Not in text/plain窥翩、multipart/form-data、application/x-www-form-urlencoded
其他請求
PUT和PATCH
DELETE:刪除資源
TCP和UDP(OICQ鳞仙,NDS)區(qū)別
1.TCP面向連接寇蚊,必須先建立連接;UDP發(fā)送數(shù)據(jù)之前不需要連接
2.TCP是可靠的鏈接繁扎,不會丟失重復(fù)幔荒,按順序到達糊闽;UDP不保證可靠
3.UDP效率更高,可以實現(xiàn)實時傳輸和廣播通信
4.TCP是點對點爹梁,UDP都可以
5.TCP對系統(tǒng)資源有要求右犹,UDP要求相對較小
TCP過程
1.創(chuàng)建socket socket();
2.設(shè)置socket屬性,setsocketopt() 可選
3.綁定 ip地址姚垃,端口號
4.開啟監(jiān)聽 listen()
5.接收客戶端的鏈接念链, accept()
6.收發(fā)數(shù)據(jù) send()
7.關(guān)閉連接
8.關(guān)閉監(jiān)聽
UDP過程
1.創(chuàng)建socket
2.設(shè)置socket屬性
3.綁定ip,端口到socket上 可選
4.循環(huán)的接收數(shù)據(jù)
5.關(guān)閉連接
WebSocket和socket
socket其實是控制傳輸?shù)慕涌诨矗讓邮遣僮鱐CP或者UDP
websocket是應(yīng)用層的協(xié)議掂墓,保持連接不斷開
node服務(wù)器優(yōu)缺點
優(yōu)點:事件驅(qū)動,是的輸入輸出性能很高
缺點:cpu計算差看成,比如做很多計算操作君编,代碼運行效率要求高,所以用底層的語言來做川慌,比如C
io密集型:需要處理比較多的任務(wù)
解釋型語言和編譯型語言
編譯型語言:
1.編譯時候會判斷錯誤吃嘿,無法繼續(xù)編輯
2.效率高,一次編譯多次運行
解釋型語言:
1.執(zhí)行時候才會判斷錯誤
2.逐句翻譯梦重,執(zhí)行效率低
require和import
require是commonjs規(guī)范兑燥,運行時候加載
import是es6規(guī)范,是編譯時候加載
hash和history
監(jiān)聽hash window.onhashchange
監(jiān)聽history window.onreplaceState