var name = 'world'
function hello() {
console.log(this.name)
}
const a = {
name = 'a',
hello: () => {
console.log(this.name)
}
}
const b = {
name = 'b',
hello: function() {
console.log(this.name)
}
}
hello()
a.hello()
b.hello()
一樣有小陷阱
name = 'a' 要改 name : 'a'
答案:
world
world
b
4. 都怎麼 review junior 的 code
沒太多經驗 這題沒得聊
5. 解釋 react 的 Virtual DOM 的特性與運作方式和解決的問題
簡述 V DOM:用 JavaScript 的「物件」來模擬真實的 DOM 結構,
並在更新時先改 V DOM,跑diff,最後只更新有修改的那條分支。
為什麼需要 V DOM?=> 效能
1. DOM 很肥,操作成本高
2. 每次改變都可能觸發頁面 reflow或 repaint
3. 當資料頻繁變動時,效能會明顯下降
V DOM 的流程:
first render 時:
React 建立一棵虛擬 DOM tree(JS object)
將它轉換成 DOM 顯示在畫面上
Data Chaged:
根據新的資料建立一個新的虛擬 DOM 樹
跟舊的虛擬 DOM 做比較(Diffing)
找出有差異的地方(Patch)
只修改必要的部分到真實 DOM
優點
效能提升 => 減少直接操作真實 DOM 的次數
結構更清楚 => 所有 DOM 的變化都經由資料狀態控制
更容易開發與維護 => 程式碼更有組織、好拆分成元件
最後建議提到:
雖然 Virtual DOM 大部分時候會讓 UI 更快。有些情況下(像是非常簡單的 DOM 結構)手寫 DOM 操作反而會更快。
提了最好給例子:如簡單的一次更新(改 title 名字),或更新和畫面無關的 DOM 部分 (彈窗 or Wizard)