JavaScript 是互联网上最流行的脚本语言,最初用于网页交互增强,如今已成为全栈开发语言。从浏览器端的页面动态效果,到服务端的 Node.js 运行时,JavaScript 无处不在。
JavaScript 语法简洁灵活。变量使用 var、let、const 声明。var 是函数作用域,可重复声明。let 是块级作用域,不可重复声明。const 声明常量,初始化后不可重新赋值。
数据类型分为原始类型和对象类型。原始类型包括 number、string、boolean、null、undefined、symbol、bigint。对象类型包括 object、array、function。typeof 操作符检查类型。
运算符进行数据和逻辑操作。算术运算符加减乘除取模。比较运算符等于、全等于、不等于。逻辑运算符与、或、非。三元运算符简化条件判断。
条件语句控制程序流程。if-else 语句根据条件执行不同代码。else if 处理多条件。switch 语句匹配多个值。truthy 和 falsy 值自动转换做条件判断。
循环语句重复执行代码。for 循环标准计数循环。while 循环条件为真时重复。do-while 先执行再判断。for…of 遍历可迭代对象。for…in 遍历对象属性。
函数是代码组织的基本单位。使用 function 关键字声明。参数列表指定输入。return 语句返回结果。函数表达式可赋值给变量。箭头函数语法更简洁。
函数参数灵活多变。默认参数提供默认值。不定参数 …args 收集剩余参数。解构参数从对象提取属性。arguments 对象访问所有实参。
作用域决定变量的可见范围。全局作用域变量处处可访问。函数作用域在函数内部可见。块级作用域 let 和 const 限制在块内。作用域链查找变量。
闭包是函数与其引用的环境的组合。内部函数访问外部函数变量。闭包用于数据私有化。模块模式创建独立作用域。常见应用包括防抖、节流、缓存。
this 指向调用函数的对象。普通函数 this 指向调用者。箭头函数 this 指向定义时的上下文。call、apply、bind 显式绑定 this。构造函数中 this 指向新实例。
原型链实现继承。每个对象有原型,原型也是对象,原型又有原型,形成原型链。constructor 指向构造函数。instanceof 检查原型链。prototype 属性定义实例共享方法。
类语法是构造函数的语法糖。class 关键字定义类。constructor 方法是构造函数。extends 实现继承。super 调用父类构造函数。静态方法用 static 关键字。
数组是有序集合,提供了丰富的方法。push、pop、shift、unshift 操作首尾元素。map、filter、reduce 转换和聚合数据。find、findIndex、includes 查询元素。slice、splice、concat 合并和切片。
对象存储键值对。点表示法和括号表示法访问属性。Object.keys、Object.values、Object.entries 获取键值数组。Object.assign 合并对象。解构赋值提取属性。
字符串处理常用方法。length 获取长度。charAt、charCodeAt 获取字符。indexOf、lastIndexOf 查找位置。substring、substr、slice 截取子串。split 分隔字符串。
DOM 是文档对象模型。document 对象是页面入口。getElementById 通过 ID 获取元素。querySelector、querySelectorAll 使用选择器。getElementsByClassName、getElementsByTagName 按标签获取。
DOM 操作修改页面内容。innerHTML 设置 HTML 内容。textContent 设置文本内容。setAttribute、getAttribute 操作属性。classList 操作类名。style 对象操作行内样式。
事件处理响应用户操作。addEventListener 绑定事件处理器。事件对象包含事件信息。preventDefault 阻止默认行为。stopPropagation 阻止冒泡。事件委托利用冒泡机制。
定时器控制时间执行。setTimeout 在指定时间后执行一次。setInterval 间隔重复执行。clearTimeout、clearInterval 取消定时器。动画使用 requestAnimationFrame。
Promise 处理异步操作。new Promise 创建承诺。then 方法处理成功结果。catch 方法处理错误。finally 方法无论成功失败都执行。Promise.all 并行等待多个异步。
async/await 是 Promise 语法糖。async 函数自动返回 Promise。await 等待 Promise 结果。try-catch 捕获错误。并行使用 Promise.all。顺序使用 await 链式调用。
Fetch API 请求网络资源。fetch 函数返回 Promise。response.ok 检查状态码。json 方法解析 JSON。headers 对象操作响应头。POST 请求配置 method 和 body。
错误处理保证程序健壮。try-catch-finally 捕获异常。throw 主动抛出错误。Error 对象包含错误信息。自定义错误类继承 Error。finally 块执行清理工作。
模块化组织代码。export 导出成员。import 导入成员。默认导出每个模块一个。命名导出可多个。动态导入 import() 返回 Promise。
严格模式提升安全性。use strict 启用严格模式。禁止未声明变量。禁止修改只读属性。禁止删除不可删除属性。禁用 with 语句。
ES6+ 新特性持续改进语言。解构赋值从对象数组提取值。模板字符串拼接字符串。Set 和 Map 新增数据结构。Symbol 新增数据类型。迭代器和生成器提供惰性序列。
浏览器存储数据。localStorage 持久存储。sessionStorage 会话存储。setItem、getItem 读写数据。removeItem 删除项。clear 清空所有数据。存储大小有限制。
正则表达式匹配文本模式。/pattern/flags 创建正则。test 方法测试匹配。exec 方法获取匹配结果。字符串方法使用正则。flags 包括 g、i、m。
类型转换有时需要显式执行。Number、String、Boolean 转换为对应类型。parseInt、parseFloat 解析字符串。toString 转换为字符串。== 和 === 区分类相等和值相等。
Symbol 创建唯一标识。Symbol(‘desc’) 创建描述性符号。Symbol.for 全局符号注册表。Symbol.iterator 迭代器协议。Symbol.toStringTag 对象标签。
Proxy 拦截对象操作。new Proxy 创建代理。get 拦截属性读取。set 拦截属性设置。has 拦截 in 操作。apply 拦截函数调用。用于验证、观察、默认值。
Reflect 是对象操作工具集。Reflect.get、Reflect.set 操作属性。Reflect.has 检查属性。Reflect.apply 调用函数。Reflect.construct 构造实例。Reflect.deleteProperty 删除属性。
Map 和 Set 新的集合类型。Map 键值对集合,任意类型键。Set 唯一值集合。WeakMap 和 WeakSet 弱引用不阻止垃圾回收。
迭代器提供遍历接口。next 方法返回 {value, done}。for…of 自动调用迭代器。entries、keys、values 方法返回迭代器。生成器函数 yield 返回值。
生成器函数暂停执行。function* 定义生成器函数。yield 暂停并返回值。next 方法恢复执行。throw 方法抛出错误。可用于实现无限序列。
Proxy 和 Reflect 组合实现完整元编程。Proxy 拦截操作,Reflect 执行默认操作。配合 defineProperty 实现响应式系统。
掌握 JavaScript 需要不断实践。阅读源码理解语言特性。尝试造轮子加深理解。参与项目积累经验。持续学习跟进语言发展。
(本文为 JavaScript 技术系列文章的第 99 篇)











暂无评论内容