[Js] 關於全域變數

 scope 可以翻譯成作用域,意即 variable能被調用的範圍

→ 也就是說,如果一個variable不在當下執行的scope裡,對當前的scope來說根本看不到variable這個東西,所以沒辦法調用。

(補充: 在JS裡,所有的object和function也都是variable。)

而 scope 又分為

  1. Global scope
  2. function scope
  3. 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

letconst的宣告,只在{大括號}中有效,無法從{}外被調用。
(→ letvarconst都有global scope和function scope,但只有letconst有block scope)

{block scope}通常指兩種情況:

  1. 在if statement裡面
  2. 在for Loop裡面
若是不用let const 等方式宣告變數容易出BUG ~

例如:
function test(a){
 number = 8
return number + a
}


console.log(test(10))

這樣還是可以運作 但是程式碼一龐大起來就很容易出問題,所以還是要乖乖用const,let喔~

同時在Global跟Function內設置變數的話 函式內的優先於全域變數

留言

這個網誌中的熱門文章

CSS 翻牌特效 關於不同瀏覽器

[js] 關於 js的 ...

[Js] 關於try 跟 catch