[Js] 關於全域變數
scope 可以翻譯成 作用域 ,意即 variable能被調用的範圍 。 → 也就是說,如果一個variable不在當下執行的scope裡,對當前的scope來說根本看不到variable這個東西,所以沒辦法調用。 (補充: 在JS裡,所有的object和function也都是variable。) 而 scope 又分為 Global scope function scope Block scope (ES6後新增) 1. Global Scope 只要一個variable宣告在所有的function之外,我們將variable稱為 global variable(全域變數)。 被宣告為global variable就會擁有Global Scope。 2. Function Scope 在JS裡, 每一個function都會有一個Function Scope。 而 被定義在function內部的variable,便不能在function外被調用 。 3. Block Scope 因為ES6新增了 let 和 const , 這兩個 keyword 能建立 Block Scope 。 let 或 const 的宣告,只在{大括號}中有效,無法從{}外被調用。 (→ let , var , const 都有global scope和function scope,但只有 let 和 const 有block scope) {block scope}通常指兩種情況: 在if statement裡面 在for Loop裡面 若是不用let const 等方式宣告變數容易出BUG ~ 例如: function test ( a ){ number = 8 return number + a } console . log ( test ( 10 )) 這樣還是可以運作 但是程式碼一龐大起來就很容易出問題,所以還是要乖乖用const,let喔~ 同時在Global跟Function內設置變數的話 函式內的優先於全域變數