Skip to content
On this page

變數

簡單說

宣告方式重複宣告更改值
var
let
const

宣告類型

var 全域變數

  • ✅ 重覆宣告
  • ✅ 更改值

宣告方式

js
//type1:
var name = 'value' //字串
var name = 123 //數字
var 名稱 = true //布林值

//type2:
var price
var quantity
var total
price = 5
quantity = 14
total = price * quantity

//type3:
var price = 5,
  quantity = 3,
  total = price * quantity

作用域 大部分都可以被覆寫,除了 函式 內的宣告。

js
var a = 111
console.log(a) // 111

// 覆寫
if (true) {
  var a = 222
}
console.log(a) // 222

// 覆寫
for (i = 1; i < 10; i++) {
  var a = 333
}
console.log(a) // 333

// 不覆寫
function test(num) {
  var a = num
}
test(999)
console.log(a) // 333

注意

函式 內宣告 var,「有區塊性」只能在 函式 內被認得,不影響「全域」。

let 區域變數

宣告一個「只作用在當前區塊的變數」,作用域在當前區塊,以及區塊包含的「子區塊」;不會在「全域」建立變數。

  • ❌ 重覆宣告
  • ✅ 更改值
js
let a = 111
console.log(a) // 111

// 不覆寫
if (true) {
  let a = 222
}
console.log(a) // 111

作用域為「當下區塊」以及「子區塊」

js
function test() {
  let a = 123
  function test2() {
    a = 456
  }
  test2()
  console.log(a)
} 

test()  // 456

let 變數認定以「區塊」為主 ({})

若變數重覆宣告,會以當前區塊為認定。

js
function test() {
  let a = 123
  function test2() {
    let a = 456
  }
  test2()
  console.log(a)
} 

test()  // ?? 123

提示

建議在 {} 內使用 let,在 全域 使用 let 也無法在 window.x 被找到。

const 區域常數

宣告一個「只作用在區塊內的常數」,設置後就不可更改。

  • ❌ 重覆宣告
  • ❌ 更改值
js
function test() {
    const a = 123
    function test2() {
      a = 456
    }
    test2()
    console.log(a) // ❌ Uncaught TypeError: Assignment to constant variable.
}

test()

提示

建議在區塊 {} 內使用。