iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
Modern Web

30天前端學習筆記心得系列 第 22

Day21-JavaScript變數宣告

  • 分享至 

  • xImage
  •  

JavaScript變數可以儲存任何類型資料,包括文字、數字、布林值、陣列和物件

變數宣告

  • 無宣告

JavaScript可以無宣告變數,就算沒有使用 varletconst 宣告變數,也可以直接使用變數名稱,無宣告變數會被視為全域變數

x = 10;
console.log(x); // 10

function foo() {
    x = 10;
}
foo();
console.log(x); // 10
  • Var

JavaScript早期變數宣告,作用域是函式級別

var name = "Cindy";
console.log(name); 
// Cindy

function foo() {
    var x = 10;
}
foo();
console.log(x); // x is not defined

var 可以重複宣告也不會出現錯誤,如果有更多變數資料會錯誤連篇,而且作用域就算離開還可以取出值

var x = 10;
var x = 20;
var x = 30;
console.log(x); // 30

// 作用域
for (var i = 0; i < 20; i++) {  
}
console.log(i); // 20

var x = 10;
function foo() {
    var x = 20;
    console.log(x); // 20
}
foo();
console.log(x); // 10
  • Let

用來宣告區域變數,只能在所在的函式或語句塊中使用

//宣告後可以重新賦予值
let x = 3;
Console.log(x) // 3
x = 6
Console.log(x) // 6

let x = 3;
x = x + 6
Console.log(x) // 9

//不能重複宣告
let x = 3;
let x = 6; 
console.log(x); // error

for (var i = 0; i < 20; i++) {
    // console.log(i);
}
console.log(i); // i is not defined

因為 var 可以重複宣告,因此要用 let 就不會重複宣告,可以改善程式碼變數錯誤

  • Const

用來宣告常數,是不能被修改的變數

//不能重新賦予值
const x = 3;
console.log(x) // 3
x = 6; 
console.log(x); // Assignment to constant variable.

const x = 3;
const x = 6; 
console.log(x); // error 

Let Const Var 區別

變數 作用域 再宣告 初始化
var 函式作用域 可以 變數宣告時初始化為 undefined
let 區塊作用域 不可以 變數宣告時初始化為 undefined
const 區塊作用域 不可以 數宣告時必須初始化
  • 區域變數,使用 letconst
  • 對於常數,使用 const
  • 全域變數,使用 var 宣告
function foo() {
  let x = 10;
  console.log(x); // 10
}
foo();

// 在 foo() 函式外使用 x
console.log(x); // x is not defined

// const 宣告常數
const PI = 3.14159;
console.log(PI); // 輸出 3.14159

// var 宣告全域變數
var x = 10;
console.log(x); // 10

// 在其他函式中使用 x
function foo() {
  console.log(x); // 10
}
foo();

總之,letconstJavaScript宣告變數更好方式,letconst 可以幫助避免程式碼一些錯誤,並使程式碼更加清晰

資料來源:JavaScript 變數宣告:var、let、const 的差異?


上一篇
Day20-CSS預處理器
下一篇
Day22-Javascript資料型態(布林值、數值)
系列文
30天前端學習筆記心得34
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言