[TOC]
# var let const三者的區別
let 和 const,因為沒有變量提升,所以如果在聲明前使用的話會引起報錯
## 變量是否可變
這個是關于const聲明的變量的特性,是面試中**經常**被問到的(反正我在面騰訊百度字節都被問到了),const聲明的變量不能被重新賦值,如果重新賦值,就會報錯,提到這個問題時,就會引出下面的問題
* const聲明的對象,對象的屬性可以改變嗎:可以,const聲明的對象,不能重新賦值,但其對象的屬性是可以變化的,我的理解是,const聲明的變量不能改變,是指這個變量指向內存中哪一段內容不能變,而對于對象來說,我們的變量存儲的是一個地址,表示對象在內存中,在堆中所處的位置,而對象的屬性改變,并不會改變這個指向
* 如何讓聲明的對象的屬性也不能被改變:我自己想到的方法有:proxy代理,Object.defineProperty劫持set操作,Object.freeze,可能還有別的方法,但我當時只回答了這些
# 箭頭函數
箭頭函數的`this`是其執行時所在的作用域,所以也無法同個apply,call,bind來改變`this`指向
箭頭函數不能使用`arguments`對象,可以使用擴展運算符來代替`arguments`對象
箭頭函數不能使用`yield`命令,因此箭頭函數不能使用 generator 函數
箭頭函數沒有`prototype`屬性,而我們知道,`new`構建實例時除了需要對`this`的指向進行指定,還要讓實例對象繼承該方法的原型,所以箭頭函數也就無法使用`new`來構建實例
# set
```
// 指向相同的對象,會靜默失敗
var obj = {foo:1}
var s = new Set([obj])
s.add(obj)
// 下面的代碼,因為每次地址都不同,所以每次都會存入成功.
var s = new Set([{foo:1}])
s.add({foo:1})
```
# GitHub 上的前端面試
[寫給初中級前端的高級進階指南](https://juejin.cn/post/6844904103504527374#heading-43)
[10 個 GitHub 上超火的前端面試項目,打造自己的加薪寶庫](https://juejin.cn/post/6895752757534261256)
- 序
- 開發自己的博客
- 面試集合
- 基礎
- 1、JavaScript
- js技巧
- 2、CSS
- position之absolute
- em與rem
- inline-block
- background
- 圓角、透明度、漸變
- 關于css中的0和none
- css display:none小結
- z-index小結
- 理解滾動條
- 有關@font-face的問題
- 3、HTML
- URI中依賴協議的URL
- 4、MySQL
- limit使用
- 5、jQuery
- 6、移動Web開發
- 設計稿與分辨率
- 字體
- 圖片的自適應
- 7、前端布局bug問題(!<=IE8)
- SEO與頁面結構
- seo
- vsphere 虛擬服務器
- 代碼里的彩蛋(神注釋)
- 玩轉HTML5移動頁面
- 知識梳理
- JS 鍵盤碼
- 其他資源記錄
- temp
- TODO
- 簡單有趣的庫??
- xx