JavaScript 核心觀念(63) - ES6 章節:Let 及 Const - Let 及 Const - 課後練習
前言
接下來又來到了課後練習的部分,接下來所有練習一樣是建議仔細想過一次之後再看答案。
第一題
請問以下將會出現何者訊息
1 | a(); |
a
ReferenceError
undefined
SyntaxError
點我看解答(請認真思考後再看解答)
答案是:「2」
匿名表達函式是無法在宣告之前就被呼叫的,因此是會出現錯誤的。
第二題
課程上我們了解到 let
會有暫時性死區問題,所以不能在變數宣告建立之前使用該變數,那 const
呢?
1 | console.log(a); |
Casper
undefined
ReferenceError
SyntaxError
點我看解答(請認真思考後再看解答)
答案是:「3」
ES6 語法不論是 let
或是 const
都會有暫時性死區的問題存在。
第三題
同前面幾題,如果我們接下來將 console.log()
移至後方會得什麼?
1 | let a; |
ReferenceError
undefined
a
SyntaxError
點我看解答(請認真思考後再看解答)
答案是:「2」
如果 let
沒有被賦予值,那麼預設將會指向到 undefined
這個預設值。
第四題
同上題,若改成 const 呢?
1 | const a; |
SyntaxError
ReferenceError
undefined
以上皆非
點我看解答(請認真思考後再看解答)
答案是:「1」
const
是必須被賦予一個預設值的,否則會出現 SyntaxError
錯誤。
第五題
請問 console.log()
將會出現什麼?
1 | const array = []; |
ReferenceError
SyntaxError
[]
['Casper']
點我看解答(請認真思考後再看解答)
答案是:「4」
const
雖然是不可變的常數,但是如果是物件或者是陣列的話,修改裡面的值或者是屬性並不會有太大影響,因為變數在指向時,是指向記憶體位置,而我們並沒有修改記憶體位置(替換成新的陣列或者新的物件)。
第六題
請問 console.log()
結果是什麼?
1 | let a = 10; |
20
10
SyntaxError
ReferenceError
點我看解答(請認真思考後再看解答)
答案是:「4」
ES6 的宣告變數語法也會有提升,但是會是使用暫時性死區取代,因此無法在宣告之前呼叫該變數。
第七題
請問以下 console.log()
將會出現什麼?
1 | function fu() { |
QQ
Casper
undefined
ReferenceError
點我看解答(請認真思考後再看解答)
答案是:「2」
這一題主要考的觀念是使用 const
之後是否可以修改物件中的屬性。
第八題
本課程講師老師建議要學好 ES6 的話應該要選擇什麼 ESLint Style?
- Airbnb
- Standard
點我看解答(請認真思考後再看解答)
答案是:「1」
主要原因在於 Airbnb 風格會要求你使用 ES6 語法撰寫。
第九題
開發上建議會使用 ESLint 統一風格,避免出現團隊開發時各寫各的而導致無法維護程式碼
- 對
- 不對
點我看解答(請認真思考後再看解答)
答案是:「1」
每個開發者都有屬於開發者的撰寫習慣,因此使用 ESLint 統一撰寫風格是比較好的。
第十題
如果公司本身若不喜歡使用 ESLint 也可以依照公司 Code Style 來撰寫
- 對
- 不對
點我看解答(請認真思考後再看解答)
答案是:「1」