發表文章

目前顯示的是 9月, 2022的文章

[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內設置變數的話 函式內的優先於全域變數