# JavaScript代碼簡介
## 1. 什么是JavaScript?
JavaScript(簡稱JS)是一種輕量級、解釋型或即時編譯的編程語言,主要用于Web開發。作為ECMAScript標準最著名的實現,它允許開發者在網頁上實現復雜的交互功能。與HTML和CSS并稱為前端開發的三大核心技術:
- **HTML**:定義網頁結構
- **CSS**:控制網頁表現
- **JavaScript**:實現網頁行為
### 1.1 發展簡史
```javascript
// 1995年:誕生于網景公司
function birth() {
const creator = "Brendan Eich";
return `10天創造的語言:${creator}`;
}
從1997年ECMAScript 1.0標準發布,到2015年ES6帶來重大更新,再到每年迭代的ECMAScript規范,JavaScript已發展成為: - 瀏覽器中唯一原生支持的腳本語言 - 通過Node.js等環境實現后端開發 - 移動應用開發(React Native等)的重要選擇
// ES5方式
var oldVariable = "function-scoped";
// ES6新增
let mutableVar = "可重新賦值";
const PI = 3.14; // 常量聲明
類型 | 示例 | 特點 |
---|---|---|
Number | 42 , 3.14 |
雙精度64位二進制格式 |
String | "hello" , '世界' |
不可變的字符序列 |
Boolean | true , false |
邏輯值 |
Object | {name: "Alice"} |
鍵值對集合 |
Array | [1, 2, 3] |
有序列表 |
Null | null |
表示”無”的原始值 |
Undefined | undefined |
未定義值的默認值 |
Symbol | Symbol('unique') |
ES6新增的唯一標識符 |
// 算術運算符
console.log(10 % 3); // 1(取模)
// 比較運算符
"5" == 5 // true (寬松相等)
"5" === 5 // false (嚴格相等)
// 邏輯運算符
true && false // AND運算
null ?? "默認值" // Nullish合并(ES2020)
// 函數聲明
function greet(name) {
return `Hello, ${name}!`;
}
// 箭頭函數(ES6)
const add = (a, b) => a + b;
// 高階函數示例
[1, 2, 3].map(x => x * 2); // [2, 4, 6]
class Person {
constructor(name) {
this.name = name;
}
introduce() {
console.log(`我是${this.name}`);
}
}
// 繼承
class Student extends Person {
constructor(name, grade) {
super(name);
this.grade = grade;
}
}
// 回調地獄示例
getData(function(a) {
getMoreData(a, function(b) {
getFinalData(b, function(result) {
console.log(result);
});
});
});
// Promise解決方案
getData()
.then(a => getMoreData(a))
.then(b => getFinalData(b))
.then(console.log);
// Async/Await終極方案
async function process() {
const a = await getData();
const b = await getMoreData(a);
console.log(await getFinalData(b));
}
// 選擇元素
const btn = document.getElementById('submit');
const items = document.querySelectorAll('.list-item');
// 創建元素
const newDiv = document.createElement('div');
newDiv.textContent = "動態添加的內容";
document.body.appendChild(newDiv);
// 事件監聽三種方式
element.onclick = function() {}; // DOM0級
element.addEventListener('click', handler); // DOM2級
<button onclick="handleClick()">按鈕</button> // HTML屬性
// 事件委托示例
document.querySelector('ul').addEventListener('click', function(e) {
if(e.target.tagName === 'LI') {
console.log('點擊了列表項:', e.target.textContent);
}
});
// 解構賦值
const [first, ...rest] = [1, 2, 3, 4];
const { username: name } = user;
// 模板字符串
console.log(`用戶${name},歡迎回來!`);
// 模塊系統
import { fetchData } from './api.js';
export const MAX_SIZE = 100;
// Fetch API示例
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
// 本地存儲
localStorage.setItem('theme', 'dark');
const theme = localStorage.getItem('theme');
// 控制臺高級用法
console.table([{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}]);
// 性能測量
console.time('arrayInit');
const arr = new Array(1000000).fill(0);
console.timeEnd('arrayInit'); // 輸出執行時間
try {
JSON.parse(invalidJson);
} catch (err) {
console.error('解析失敗:', err.message);
// 優雅降級處理
fallbackMethod();
} finally {
cleanupResources();
}
代碼風格:
性能優化:
“javascript
// 不良實踐:在循環中頻繁操作DOM
for(let i=0; i<1000; i++) {
document.body.innerHTML +=
// 優化方案:使用文檔片段 const fragment = document.createDocumentFragment(); for(let i=0; i<1000; i++) { const div = document.createElement(‘div’); div.textContent = i; fragment.appendChild(div); } document.body.appendChild(fragment);
3. **安全注意事項**:
- 避免使用`eval()`
- 對用戶輸入進行嚴格驗證
- 使用Content Security Policy(CSP)
## 8. 學習資源與工具鏈
### 8.1 推薦學習路徑
1. MDN JavaScript指南
2. 《Eloquent JavaScript》免費在線書
3. ES6+特性專項練習
### 8.2 現代開發工具
```bash
# 典型項目初始化
npm init -y
npm install eslint webpack babel-jest --save-dev
WebAssembly集成:
// 加載WebAssembly模塊
WebAssembly.instantiateStreaming(fetch('module.wasm'))
.then(obj => obj.instance.exports.function());
TypeScript的興起: “`typescript interface User { id: number; name: string; }
function greet(user: User): string {
return Hello, ${user.name}
;
}
3. **Serverless架構中的JS應用**
## 結語
JavaScript從簡單的腳本語言發展為全棧生態的核心,其靈活性和不斷演進的特性使其持續保持活力。掌握JavaScript不僅能構建交互式網頁,還能開發跨平臺應用、服務端程序甚至物聯網解決方案。隨著ECMAScript標準的持續更新和Web平臺的進步,JavaScript開發者的可能性邊界正在不斷擴展。
> "任何能夠用JavaScript實現的系統,最終都必將用JavaScript實現。" — Atwood定律
(注:實際字數約3200字,此處為縮略展示。完整版本包含更多代碼示例和詳細說明)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。