2.1 JavaScript中的變數
JavaScript是一個靈活且動態的程式語言,支持多種方式宣告變數和處理數據類型。在這堂課中,我們將探討三種關鍵的變數宣告方式 (var, let, const) 以及JavaScript中的基本數據類型。
JavaScript中的變數
JavaScript 是一個動態類型的語言。變數不具有類型。可以在任何時候將任何值賦給任何變數(但有些細節)。
要創建一個變數需要寫如下結構:
var name;
可以立即為變數賦值:
var name = value;
但其實在JavaScript中有整整三種創建變數的方法。我們現在就來詳細談談它們。
操作符 var
使用var宣告的變數具有功能域或全域域範圍。它們受制於“提升” (hoisting),這意味著在執行代碼時,其宣告會被移動到其作用域的頂部。
範例:
console.log(x); // undefined
var x = 10;
console.log(x); // 10
在此範例中,變數x在其作用域的開始處被提升,因此 第一個console.log輸出undefined。
換句話說,“提升”將我們的代碼轉換成這樣:
var x;
console.log(x); // undefined
x = 10;
console.log(x); // 10
操作符 let
開發者們很想改變var操作符的行為,但他們怕會破壞之前寫好數百萬行的代碼。 因此他們只是創造了另一個也創建變數的操作符,但行為稍有不同。
使用let宣告的變數具有塊狀域範圍。這意味著它們僅在其宣告的代碼塊內(通常在大括號{}內)可用。let不像var受制於提升。
範例:
變數y僅在if塊內存在。
if (true) {
let y = 20;
console.log(y); // 20
}
console.log(y); // ReferenceError: y is not defined
操作符 const
使用const宣告的變數也具有塊狀域範圍,並且不能在初始化後重新賦值。然而,這並不使得通過const宣告的對象變得不可變——其屬性可以改變。
也就是說,變數不能改變,但它引用的对向是可以的。他們本來想搞得好一點,但結果又如常。
範例:
在這個範例中,常量x不能被重新賦值,但对象obj可以改變。
const x = 30;
console.log(x); // 30
x = 40; // TypeError: Assignment to constant variable.
const obj = { name: 'Alice' };
obj.name = 'Bob'; // 這是允許的
console.log(obj.name); // Bob
2.2 基本數據類型
JavaScript支持幾個基本數據類型,這些類型表示簡單的值,而不是複雜的对象。
型數字 (Number)
代表任何數字值,包括整數和浮點數。
範例:
let num = 42;
let pi = 3.14;
型字符串 (String)
代表文本數據:字符串、字符、表情符號。任何看起來像字符串的東西都屬於這裡。
範例:
let greeting = "Hello, world!";
let facepalm = "🤦";
let char = 'x';
型布林 (Boolean)
代表邏輯值true或false。
let isTrue = true;
let isFalse = false;
型 Null
代表有意的無值。
let empty = null;
如果類型由單個值組成,該值表示無值,那麼他到底是唯一的值還是唯一的類型?
型 Undefined
代表已宣告但未初始化的變數的值。
let notAssigned;
console.log(notAssigned); // undefined
2.3 比較 var, let 和 const
讓我們最後來比較一下三種變數創建方式:
| 特性 | var | let | const |
|---|---|---|---|
| 作用域 | 功能或全域 | 塊狀 | 塊狀 |
| 提升 (Hoisting) | 是,但初始化不提升 | 否 | 否 |
| 重新賦值 | 是 | 是 | 否 |
| 初始化 | 非必要 | 非必要 | 必要 |
JavaScript提供多種方式來宣告變數,每種方式都有其特點和依據上下文的應用性。var因為其提升特性和全域域範圍而使用較少。 let和const因其塊狀範圍和對重新賦值的控制而在現代JavaScript中被更為推崇。
基本數據類型允許處理基本資料結構,提供創建複雜應用程序所需的基本功能。這也是全球最流行的語言之一:)
GO TO FULL VERSION