Appearance
JavaScript 简介
什么是 JavaScript?
JavaScript 是一种轻量级、解释型或即时编译型的编程语言。虽然它最著名的是作为网页脚本语言,但如今已广泛应用于多个领域:
- 前端开发:为网页添加交互性和动态效果
- 后端开发:通过 Node.js 构建服务器端应用
- 移动应用:使用 React Native、Ionic 等框架开发跨平台移动应用
- 桌面应用:使用 Electron 构建跨平台桌面应用
- 游戏开发:创建网页游戏和简单的游戏应用
JavaScript 的特点
1. 动态类型
JavaScript 是动态类型语言,变量可以在运行时改变类型:
javascript
let message = 'Hello' // 字符串类型
message = 42 // 现在是数字类型
message = true // 现在是布尔类型2. 弱类型
JavaScript 允许不同类型之间的隐式转换:
javascript
console.log('5' + 3) // '53' (字符串拼接)
console.log('5' - 3) // 2 (数字相减)3. 基于原型的面向对象
JavaScript 使用原型链实现继承,而非传统的类继承(ES6 的 class 语法是原型继承的语法糖):
javascript
function Person(name) {
this.name = name
}
Person.prototype.greet = function () {
console.log(`Hello, I'm ${this.name}`)
}
const person = new Person('Alice')
person.greet() // Hello, I'm Alice4. 事件驱动
JavaScript 非常适合处理异步事件:
javascript
document.getElementById('button').addEventListener('click', function () {
console.log('Button clicked!')
})5. 单线程与异步编程
JavaScript 主线程是单线程的,但通过事件循环机制处理异步操作:
javascript
console.log('Start')
setTimeout(() => {
console.log('Async operation')
}, 1000)
console.log('End')
// 输出顺序: Start -> End -> Async operationJavaScript 的历史
| 年份 | 事件 |
|---|---|
| 1995 | Brendan Eich 在 10 天内创建了 JavaScript(最初叫 Mocha) |
| 1996 | JavaScript 提交给 ECMA 国际组织标准化 |
| 1997 | ECMAScript 1 发布 |
| 2009 | ECMAScript 5 发布,Node.js 诞生 |
| 2015 | ECMAScript 6 (ES2015) 发布,引入大量新特性 |
| 至今 | 每年发布一个新版本,持续演进 |
JavaScript 与 ECMAScript 的关系
- ECMAScript 是语言规范/标准
- JavaScript 是 ECMAScript 规范的一种实现
- 其他实现还包括 JScript(微软)、ActionScript 等
现代 JavaScript (ES6+)
ES6 及后续版本引入了许多重要特性:
let 和 const
javascript
let count = 1 // 块级作用域变量
const PI = 3.14159 // 常量箭头函数
javascript
const add = (a, b) => a + b
const square = x => x * x解构赋值
javascript
const { name, age } = person
const [first, second, ...rest] = array模板字符串
javascript
const greeting = `Hello, ${name}!`Promise 和 async/await
javascript
// Promise
fetch('/api/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error))
// async/await
async function fetchData() {
try {
const response = await fetch('/api/data')
const data = await response.json()
console.log(data)
} catch (error) {
console.error(error)
}
}模块化
javascript
// 导出
export const name = 'module'
export default function () {
/* ... */
}
// 导入
import defaultExport, { name } from './module.js'数据类型
JavaScript 有以下数据类型:
原始类型(Primitive Types)
| 类型 | 描述 | 示例 |
|---|---|---|
undefined | 未定义 | let x; |
null | 空值 | let x = null; |
boolean | 布尔值 | true, false |
number | 数字 | 42, 3.14, NaN, Infinity |
string | 字符串 | 'hello', "world", `template` |
symbol | 符号(ES6) | Symbol('id') |
bigint | 大整数(ES2020) | 9007199254740991n |
引用类型
- Object:对象
- Array:数组
- Function:函数
- Date:日期
- RegExp:正则表达式
- Map / Set:映射和集合(ES6)
- WeakMap / WeakSet:弱映射和弱集合
学习路线建议
- 基础语法:变量、数据类型、运算符、流程控制
- 函数:函数声明、箭头函数、作用域、闭包
- 对象与数组:对象操作、数组方法、解构赋值
- DOM 操作:元素选择、事件处理、动态修改
- 异步编程:回调函数、Promise、async/await
- ES6+ 新特性:模块化、类、扩展运算符等
- 框架学习:React、Vue、Angular 等