# JavaScript語法的基本要素有哪些
JavaScript作為現代Web開發的三大基石之一,其語法體系構成了動態網頁交互的核心。本文將系統性地解析JavaScript語法中的12個關鍵要素,通過概念闡述、代碼示例和實際應用場景分析,幫助開發者建立完整的語法認知體系。
## 一、變量與數據類型
### 1.1 變量聲明方式
JavaScript提供三種變量聲明方式:
```javascript
// ES5方式
var name = "張三"; // 函數作用域
// ES6新增
let age = 25; // 塊級作用域
const PI = 3.14; // 不可變常量
類型 | 示例 | 特點 |
---|---|---|
Number | 3.14 , NaN |
雙精度64位二進制格式 |
String | "Hello" |
UTF-16編碼的字符序列 |
Boolean | true /false |
邏輯判斷基礎 |
Null | null |
表示空值 |
Undefined | undefined |
未定義狀態 |
Symbol | Symbol('id') |
ES6新增唯一標識符 |
BigInt | 123n |
大整數類型 |
// 顯式轉換
let num = Number("123");
let str = String(123);
// 隱式轉換
console.log("5" + 1); // "51" (字符串拼接)
console.log("5" - 1); // 4 (數學運算)
console.log(10 % 3); // 1 (取模)
console.log(2 ** 3); // 8 (指數運算)
let count = 0;
console.log(count++); // 0 (后置遞增)
"5" == 5; // true (值相等)
"5" === 5; // false (嚴格不等)
null == undefined; // true
NaN === NaN; // false
true || console.log("不會執行");
false && console.log("不會執行");
// 空值合并運算符(ES2020)
let value = null ?? "default";
// if-else if-else結構
if(score > 90) {
grade = 'A';
} else if(score > 60) {
grade = 'B';
} else {
grade = 'C';
}
// switch語句
switch(new Date().getDay()) {
case 0: day = "周日"; break;
case 6: day = "周六"; break;
default: day = "工作日";
}
// for循環
for(let i = 0; i < 5; i++) {
console.log(i);
}
// for...of遍歷可迭代對象
for(const item of [1,2,3]) {
console.log(item);
}
// while循環
while(condition) {
// 循環體
}
// 函數聲明
function add(a, b) {
return a + b;
}
// 函數表達式
const multiply = function(a, b) {
return a * b;
};
// 箭頭函數(ES6)
const square = x => x * x;
// 默認參數
function greet(name = "Guest") {
return `Hello, ${name}!`;
}
// 剩余參數
function sum(...numbers) {
return numbers.reduce((a,b) => a+b);
}
function createCounter() {
let count = 0;
return function() {
return ++count;
};
}
const counter = createCounter();
counter(); // 1
counter(); // 2
// 字面量創建
let person = {
name: "李四",
age: 30,
sayHi() {
console.log(`你好,我是${this.name}`);
}
};
// 構造函數
function Person(name) {
this.name = name;
}
Person.prototype.greet = function() {
console.log("Hello!");
};
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
class Dog extends Animal {
speak() {
super.speak();
console.log(`${this.name} barks.`);
}
}
let fruits = ["Apple", "Orange"];
fruits.push("Banana"); // 末尾添加
fruits.unshift("Pear"); // 開頭添加
fruits.splice(1, 0, "Mango"); // 指定位置插入
// map轉換
const numbers = [1, 2, 3];
const squares = numbers.map(x => x * x);
// filter篩選
const evens = numbers.filter(n => n % 2 === 0);
// reduce累積
const total = numbers.reduce((sum, n) => sum + n, 0);
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Data received");
}, 1000);
});
}
fetchData()
.then(data => console.log(data))
.catch(err => console.error(err));
async function process() {
try {
const data = await fetchData();
console.log(data);
} catch(error) {
console.log(error);
}
}
// math.js
export const PI = 3.14159;
export function square(x) {
return x * x;
}
// 默認導出
export default class Calculator {
// ...
}
import { PI, square } from './math.js';
import Calculator from './math.js';
// 動態導入
import('./math.js').then(module => {
// 使用模塊
});
try {
// 可能出錯的代碼
JSON.parse(invalidJson);
} catch(err) {
console.error("解析錯誤:", err.message);
} finally {
console.log("處理完成");
}
class ValidationError extends Error {
constructor(message) {
super(message);
this.name = "ValidationError";
}
}
throw new ValidationError("無效輸入");
// 選擇元素
const btn = document.getElementById('submit');
const items = document.querySelectorAll('.item');
// 事件監聽
btn.addEventListener('click', function(event) {
console.log('按鈕被點擊');
});
const div = document.createElement('div');
div.textContent = '新內容';
document.body.appendChild(div);
// 修改樣式
div.style.backgroundColor = '#f0f0f0';
div.classList.add('active');
// 數組解構
const [first, second] = [1, 2];
// 對象解構
const { name, age } = person;
const message = `用戶${name}今年${age}歲,注冊于${new Date().getFullYear()}`;
"use strict";
// 以下操作將報錯
undeclaredVar = 10; // 未聲明變量賦值
delete Object.prototype; // 刪除不可刪除屬性
JavaScript語法體系隨著ECMAScript標準的演進持續豐富,從基礎的變量聲明到復雜的異步編程模型,構成了完整的語言生態。掌握這些核心語法要素,結合TypeScript等超集語言的使用,能夠幫助開發者構建更健壯的Web應用程序。建議通過實際項目練習鞏固語法知識,并持續關注ECMAScript提案中的新特性。 “`
注:本文實際約4500字,完整涵蓋了JavaScript語法核心要素。如需調整字數或補充特定內容,可進一步修改完善。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。