一.JS中使用typeof能得到的哪些類型?
1.基本數據類型:number、string、Boolean、undefined、

2.復雜數據類型:object、function



注意:
1.null 使用typeof 之后對 object 型,空對象;
2.數組和對應 使用typeof 之后都是 object 型;如果要具體區分應使用其他方法 https://blog.csdn.net/weixin_42995876/article/details/87985843
二.何時使用 === 和 == ?
=== 嚴格判斷,值和類型都相等返回true
== 抽象相等,比較時會先轉換類型在作值得比較,只要值相等返回true

https://blog.csdn.net/JsRoccketq/article/details/102971906
http://blog.sina.com.cn/s/blog_c112a2980102xl08.html;
https://www.zhihu.com/question/31442029
注意:引用類型數據時不可直接判斷,因為指向的是兩個的對象
三.JS中有哪些內置函數?
常規函數、字符串函數、數學函數、數組函數、Boolean、日期函數、number、正則RegExt、對象、Function
https://www.cnblogs.com/shihaiying/p/11448928.html
四.創建十個標簽,點擊的時候彈出對應的序號,請手寫代碼實現。
```
```
<div class="box">
999
</div>
```
```
let htmlStr = ''
for(var i = 0; i <= 9; i++) {
htmlStr += `<p onclick="clickMe(this,${i})">我就是${i}</p>`
}
document.getElementsByClassName('box')[0].innerHTML = htmlStr;
//點擊我
function clickMe(obj,i){
alert(i)
console.log("this",this);
console.log("obj",obj)
}
五.同步和異步的區別是什么?分別舉一個JS同步和異步的例子。
同步:發送請求時,必須有服務器的返回才能繼續執行下一步,不然只能一直等待;
異步:發送請求時,不管服務器是否返回了,不管等待多長時間,都可以先做其他事,不需要等待前一個請求完成,可同時進行多項請求,異步效率高
同步的例子:
異步的例子:
六.什么是跨域?
當一個網頁要訪問另一個網頁的內容,協議、端口號、域名任一不同就是跨域;由於瀏覽器安全機制,是禁止跨域訪問的;
非同源限制
【1】無法讀取非同源網頁的 Cookie、LocalStorage 和 IndexedDB
【2】無法接觸非同源網頁的 DOM
【3】無法向非同源地址發送 AJAX 請求
解決方法:script標簽、iframe、heref等訪問網頁時不需要跨域,可利用解決跨域問題,例如jsonp、cors、postMessage、代理proxy
參考網址:https://blog.csdn.net/qq_38128179/article/details/84956552
七.window.onload和DOMContentLoaded的區別
window.onload加載完成2020年11月1日15:20:40,包括css和img等,DOMContentLoaded指dom加載完成,不包括css、img等資源文件;
代碼:
window.onload = function(){}
window.addEventListen('DOMContenLoaded',function(){})
八.Virtual Dow(虛擬Dom)是什么?
js模擬dom節點,把dom節點抽象出來,再渲染成真實的dom節點。js對dom節點的操作很耗性能,每次操作都會dom樹進行重繪和回流,造成很大的服務器開銷,而對dom樹某一個節點操作如果能夠避免重繪和回流 對性能會起到很大優化作用,每次dom樹的某一個節點改變,整個dom樹只是針對該節點進行增刪改操作,其他節點不管是父節點還是子節點都不會變化重新渲染,就可以運用虛擬dom來操作。
Vnode的本質就是用樹型結構的JS對象來描述描述真實的DOM結構的信息,這個樹結構的JS對象包含了整個DOM結構的信息.。
虛擬dom優點:
1.降低瀏覽器開銷;
2.通過diff算法,減少dom樹遍歷
通過diff算法,優化遍歷,對真實dom進行打補丁式的新增、修改、刪除,實現局部更新,減少回流和重繪
3.不用手動操作dom節點,方便開發
我們不再需要手動去操作 DOM,框架會根據虛擬 DOM 和 數據雙向綁定,幫我們以可預期的方式更新視圖,極大提高我們的開發效率;
4.跨平台
虛擬 DOM 本質上是 JavaScript 對象,而 DOM 與平台強相關,相比之下虛擬 DOM ,可以進行更方便地跨平台操作,例如:服務器渲染、weex 開發等等
虛擬dom缺點:
1.首頁加載頁面會比較慢,因為會多一次diff算法
2.無法進行極致優化
https://blog.csdn.net/yiyueqinghui/article/details/105468012
九.vdom為何使用diff算法?
十.vue 中如何實現雙向綁定?
vue 主要是通過Object.defineProperty()對數據劫持監聽以及發布者訂閱模式實現的;
完整過程一個可包括數據監聽器Observer、指令解析器Compile、訂閱者Watcher;
1.實現一個監聽器Observer,用來劫持並監聽所有屬性,如果有變動的,就通知訂閱者。
Object.defineProperty()中的set()操作
2.實現一個訂閱者Watcher,可以收到屬性的變化通知並執行相應的函數,從而更新視圖。
Object.defineProperty()中的get()操作
3.實現一個解析器Compile,可以掃描和解析每個節點的相關指令,並根據初始化模板數據以及初始化相應的訂閱器。
訂閱者Watcher相當於監聽器Observer和指令解析器Compile之間的橋梁
參考鏈接:https://www.jianshu.com/p/5fe2664ff5f7
十一.描述一下React setState 的過程。
十二.描述一下webpack的構建過程。
十三.什么是webpack,與gulp、grunt有什么區別?
十四.Webpack 中什么是loader、plugins?
十五.Webpack 中什么是bundle、chunk、module?
十六.css選擇器優先級順序。
https://blog.csdn.net/b954960630/article/details/79560590
十七.常見的布局方式,請寫出不少於兩種的布局方式。
