JavaScript 概述
定义
JavaScript(简称JS)是一种动态、弱类型的解释型编程语言,主要用于Web开发,支持面向对象、函数式和命令式编程范式。
核心特性
语言特征
- 动态类型:变量类型在运行时确定
- 解释执行:无需编译,由JavaScript引擎直接执行
- 原型继承:基于原型链的面向对象机制
- 一等函数:函数可作为值传递、存储和操作
执行环境
// 浏览器环境
console.log(window); // 全局对象
document.getElementById(); // DOM API
// Node.js环境
console.log(global); // 全局对象
require('fs'); // 文件系统模块
应用领域
领域 | 技术栈 | 典型应用 |
---|
前端开发 | React, Vue, Angular | SPA、移动端Web应用 |
后端开发 | Node.js, Express | API服务、微服务 |
移动应用 | React Native, Cordova | 跨平台移动应用 |
桌面应用 | Electron, Tauri | VS Code, Discord |
游戏开发 | Phaser, Three.js | 网页游戏、3D可视化 |
JavaScript 引擎
主流引擎
- V8(Chrome, Node.js):高性能,即时编译
- SpiderMonkey(Firefox):Mozilla开发的引擎
- JavaScriptCore(Safari):WebKit项目的一部分
- Chakra(旧版Edge):Microsoft开发
性能特性
// JIT编译优化示例
function hotFunction(n) {
// 频繁调用的函数会被优化
return n * n + n;
}
// 引擎会对热点代码进行优化
for (let i = 0; i < 10000; i++) {
hotFunction(i);
}
版本演进
ES版本里程碑
- ES5 (2009):
strict mode
、JSON
、Array
方法
- ES6/ES2015 (2015):
let
/const
、箭头函数、模块
- ES2017:
async
/await
- ES2020:可选链、空值合并操作符
- ES2022:顶层
await
、私有字段
现代语法特性
// ES6+特性示例
const { name, age = 18 } = user; // 解构赋值
const fullName = `${firstName} ${lastName}`; // 模板字符串
const numbers = [...array1, ...array2]; // 扩展操作符
const result = await fetchData(); // async/await
const value = obj?.property?.value; // 可选链
const data = input ?? defaultValue; // 空值合并
与其他语言对比
JavaScript vs Java
特性 | JavaScript | Java |
---|
类型系统 | 动态弱类型 | 静态强类型 |
编译 | 解释执行 | 编译执行 |
内存管理 | 自动垃圾回收 | 自动垃圾回收 |
继承 | 原型继承 | 类继承 |
用途 | Web、全栈 | 企业级后端 |
类型系统差异
// JavaScript - 动态类型
let variable = "字符串";
variable = 42; // 运行时改变类型
variable = true; // 合法操作
// 自动类型转换
console.log("5" + 3); // "53"(字符串拼接)
console.log("5" - 3); // 2(数值运算)
运行时环境
浏览器中的JavaScript
// Web APIs访问
navigator.geolocation.getCurrentPosition();
localStorage.setItem('key', 'value');
fetch('/api/data').then(response => response.json());
// 事件驱动
document.addEventListener('click', handleClick);
Node.js中的JavaScript
// 系统级API访问
const fs = require('fs');
const path = require('path');
const http = require('http');
// 创建HTTP服务器
const server = http.createServer((req, res) => {
res.end('Hello World');
});
性能特征
优势
- JIT编译:运行时优化热点代码
- 事件驱动:高效处理I/O密集型任务
- 单线程:避免线程同步开销
- 垃圾回收:自动内存管理
限制
- 单线程:CPU密集型任务性能有限
- 动态特性:某些优化难度较大
- 类型检查:运行时才能发现类型错误
学习路径
基础阶段
- JavaScript语法基础
- DOM操作与事件处理
- 异步编程基础
- ES6+现代特性
进阶阶段
- 设计模式与架构
- 前端框架深入
- 性能优化技巧
- 工程化与工具链
高级阶段
- 引擎原理理解
- 编译器与AST操作
- 微前端架构
- 全栈开发
生态系统
包管理器
- npm:Node.js默认包管理器
- yarn:Facebook开发的替代方案
- pnpm:高效的磁盘空间利用
构建工具
- Webpack:模块打包工具
- Vite:现代前端构建工具
- Rollup:库打包工具
开发工具
- VS Code:主流代码编辑器
- Chrome DevTools:浏览器调试工具
- ESLint:代码质量检查工具
下一篇:HTML中的JavaScript