JavaScript 中的變數和數據值是編程的基礎。理解這些概念對於掌握 JavaScript 的其他功能非常重要。
以下是 JavaScript 變數與值的簡介:
變數用於儲存數據值,並且這些值可以在程序中進行操作和使用。JavaScript 提供了三種主要的變數聲明方式:
var
:在 ES6(ECMAScript 2015)之前的聲明方式。var
具有函數作用域,並且會被提升(hoisting),這意味著變數可以在聲明之前被使用。
var x = 10;
console.log(x); // 10
let
:ES6 引入的變數聲明方式,具有塊級作用域,適合用於控制變數的作用範圍。與 var
不同,let
不會被提升。
let y = 20;
if (true) {
let y = 30; // 這裡的 y 是不同的變數
console.log(y); // 30
}
console.log(y); // 20
const
:ES6 引入的聲明方式,用於聲明常量,即一旦賦值後不能更改。const
也具有塊級作用域。
const z = 40;
// z = 50; // 這會引發錯誤,因為 const 變數不能重新賦值
JavaScript 中的數據類型分為原始數據類型和複合數據類型:
原始數據類型:包括數字、字符串、布爾值、null
、undefined
和符號(ES6 引入)。
數字(Number):包括整數和浮點數。
let age = 25; // 整數
let price = 19.99; // 浮點數
字符串(String):由一系列字符組成,用於儲存文本。
let name = 'John Doe';
let greeting = "Hello, world!";
let multiline = `This is a
multiline string.`;
布林值(Boolean):用於表示真假值。
let isActive = true;
let isCompleted = false;
null
:表示“無”或“空”的值。
let emptyValue = null;
undefined
:表示變數未被賦值。
let notAssigned;
console.log(notAssigned); // undefined
符號(Symbol)(ES6 引入):用於唯一且不可變的數據。
const uniqueSymbol = Symbol('description');
複合數據類型:用於儲存複雜的數據結構。
對象(Object):由鍵值對組成的數據結構,用於儲存多種不同類型的數據。
let person = {
name: 'Alice',
age: 30,
isStudent: false
};
console.log(person.name); // Alice
數組(Array):有序的數據集合,通常用來儲存一系列值。
let fruits = ['apple', 'banana', 'cherry'];
console.log(fruits[1]); // banana
函數(Function):也是一種對象,用於執行特定的操作。
function greet(name) {
return `Hello, ${name}!`;
}
console.log(greet('Bob')); // Hello, Bob!
變數作用域決定了變數在程式中的可訪問範圍。
全局作用域:變數在程序的任何地方都可以訪問。
var globalVar = 'I am global';
function test() {
console.log(globalVar); // I am global
}
test();
函數作用域:變數僅在函數內部可訪問。
function myFunction() {
var localVar = 'I am local';
console.log(localVar); // I am local
}
console.log(localVar); // ReferenceError: localVar is not defined
塊級作用域:let
和 const
變數的作用域是塊級的,即僅在花括號 {}
內部可見。
if (true) {
let blockVar = 'I am block-scoped';
console.log(blockVar); // I am block-scoped
}
console.log(blockVar); // ReferenceError: blockVar is not defined
變數提升指的是變數聲明會被提升到作用域的頂部,但賦值不會。
console.log(a); // undefined
var a = 5;
console.log(a); // 5