今天是 Scope & Closure CH.3 的最後一篇文
先說為什麼要探討 arrow function scope,我們知道 arrow function 寫法很簡潔,甚至不用 function
keyword 就能宣告一個函式,不用 {}
也能回傳值。所有與 function scope 有關的角色,arrow function 都省略了,那 arrow function 還有 scope 嗎?
答案是:有的。
const booking = genre => console.log(genre);
booking('ticket'); // ticket
console.log(genre); // ReferenceError: genre is not defined
booking
是個 arrow function,既沒有 function
也沒有 {}
,但在全域要調用 genre
時,卻發生 Reference Error。
原因在於,arrow function 與一般的 function 一樣,也有 scope,雖然看不出來,也沒有 curly braces,但 arrow function 是有 scope 的。
參考