javascript
导入方式
HTML 中的脚本必须位于 标签之间。
脚本可被放置在 HTML 页面的
和 部分中。JavaScript 可以通过不同的方式来输出数据:
- 使用 window.alert() 弹出警告框。
- 使用 document.write() 方法将内容写到 HTML 文档中。
- 使用 innerHTML 写入到 HTML 元素。
- 使用 console.log() 写入到浏览器的控制台。
1 |
|
1 | console.log('Hello, 外联样式'); |
常见语法
在strict模式下运行的JavaScript代码,强制通过var申明变量,未使用var申明变量就使用的,将导致运行错误。
作用域
| 特性 | 函数作用域 (var) |
块级作用域 (let / const) |
|---|---|---|
| 定义 | 变量在整个函数内有效。 | 变量仅在 {} 代码块内有效。 |
| 关键字 | var |
let, const |
| 可见范围 | 渗透 if, for, while 等块。 |
被严格限制在 if, for, while 等块内。 |
| 优点/缺点 | 缺点:容易造成变量泄露、命名冲突和意外的 bug(如循环陷阱)。 | 优点:代码更清晰、更安全、更易于维护,能有效避免命名冲突。 |
函数提升和变量提升
| 声明方式 | 提升行为 | 初始化状态 | 声明前访问 |
|---|---|---|---|
var |
声明被提升 | 初始化为 undefined |
得到 undefined |
let |
声明被提升 | 未初始化 (进入 TDZ) | ReferenceError |
const |
声明被提升 | 未初始化 (进入 TDZ) | ReferenceError |
| 函数声明 | 整个函数体被提升 | - | 可以正常调用 |
变量
变量提升:它会先扫描整个函数体的语句,把所有用var申明的变量“提升”到函数顶部:
| 特性 | var |
let |
const |
|---|---|---|---|
| 核心定义 | JavaScript 最初的变量声明方式,规则宽松,现已不推荐使用。 | 用于声明其值未来可能需要被改变的变量。 | 用于声明一个不希望被重新赋值的“只读”变量。 |
| 作用域 | 函数作用域 | 块级作用域 {} |
块级作用域 {} |
| 变量提升 | 会提升,并初始化为 undefined。(可以先使用后声明,值为 undefined) |
会提升,但存在**暂时性死区 (TDZ)**。(在声明前访问会报错) | 会提升,但存在**暂时性死区 (TDZ)**。(在声明前访问会报错) |
| 重复声明 | 允许在同一作用域内重复声明。(容易造成变量覆盖) | 不允许在同一作用域内重复声明。(更安全) | 不允许在同一作用域内重复声明。(更安全) |
| 重新赋值 | 允许 | 允许 | 不允许 (但可修改对象或数组的内部内容) |
| 初始值 | 声明时可以不赋初始值,默认为 undefined |
声明时可以不赋初始值,默认为 undefined |
声明时必须立即赋初始值,否则报错。 |
| 特性 | undefined |
null |
|---|---|---|
| 含义 | “缺少值”、“未定义” | “没有对象”、“空值” |
| 类型 | undefined 类型 (typeof a === "undefined") |
object 类型 (typeof a === "object") |
| 来源 | 通常是系统自动赋值 | 必须是程序员手动赋值 |
| 用途 | 检查变量是否已赋值、函数是否有返回值等 | 明确表示一个变量为空,特别是期望存放对象的地方 |
条件语句和循环语句和错误处理
条件语句
if (条件1) {
// 如果条件1为 true,执行这里
} else if (条件2) {
// 如果条件1不成立,但条件2为 true,执行这里
} else {
// 如果以上所有条件都不成立,执行这里
}
循环语句
for (初始化; 条件; 更新) {
// 循环体代码
}
while (条件) {
// 只要条件为 true,就一直执行这里的代码
// 重要:循环体内必须有代码能让条件最终变为 false,否则会死循环!
}
try {
// 可能会抛出错误的代码
} catch (error) {
// 当 try 里出错时执行
// error 是一个错误对象,可以通过 error.message 查看错误信息
} finally {
// 可选
// 不管 try 里是否出错,这里的代码都会执行
}
| 指令 | 作用 | 对循环的影响 |
|---|---|---|
break |
终止整个循环 | 循环立即结束 |
continue |
跳过当前这次循环的剩余部分 | 循环继续执行下一次 |
1 |
|
函数
//普通函数
function functionName(参数1,参数2) {
// 函数体 (要执行的代码)
// …
return result; // 可选的返回值
}
// 箭头函数
const fn = (参数1, 参数2) => {
//函数体
//…
return a + b;
};
事件
事件可以用于处理表单验证,用户输入,用户行为及浏览器动作,在事件触发时 JavaScript 可以执行一些代码
下面是一些常见的HTML事件的列表:
| 事件 | 描述 |
|---|---|
| onchange | HTML 元素改变 |
| onclick | 用户点击 HTML 元素 |
| onmouseover | 用户在一个HTML元素上移动鼠标 |
| onmouseout | 用户从一个HTML元素上移开鼠标 |
| onkeydown | 用户按下键盘按键 |
| onload | 浏览器已完成页面的加载 |
DOM
document代表整个网页文档,是 DOM 的入口点。通过它可以访问/操作页面里的所有节点。是window的子对象
“全局找/建/文档态 → document;视口/地址/尺寸 → window;对哪块操作/监听 → 用那块的元素element。”
查询/获取节点
document.getElementById('idName'): 通过元素的id获取,最快最精确。(返回单个元素)document.getElementsByClassName('className'): 通过class名称获取。(返回一个 HTMLCollection,类似数组)document.getElementsByTagName('tagName'): 通过标签名(如'p','div')获取。(返回一个 HTMLCollection)
更新/修改节点
- 修改内容
element.textContent = '新文本内容': 只修改文本,会忽略 HTML 标签(更安全)。element.innerHTML = '<strong>新</strong> HTML 内容': 可以解析并插入 HTML 标签。
- 修改样式
element.style.property = 'value': 直接修改行内样式,例如title.style.color = 'red';。
事件监听器
addEventListener() 方法:
element.addEventListener(event, function, useCapture);
第一个参数是事件的类型 (如 “click” 或 “mousedown”).
第二个参数是事件触发后调用的函数。
第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。
| 对象 | 定义(详细) | 常用属性 / 方法 | 说明 |
|---|---|---|---|
| document | 代表整个网页文档,是 DOM 的入口点。通过它可以访问/操作页面里的所有节点。 | - getElementById(id) → 根据 id 获取元素 - getElementsByClassName(name) → 根据 class 获取元素集合 - getElementsByTagName(tag) → 根据标签获取集合 - querySelector(sel) / querySelectorAll(sel) → 按选择器获取 - createElement(tag) → 创建新元素 - createTextNode(text) → 创建文本节点 - body / head / documentElement → 获取 <body> <head> <html> |
最常用的 DOM 对象,所有节点操作的起点 |
| Element | 表示一个 HTML 元素节点(如 <div>、<p> 等)。可以操作它的内容、属性、样式。 |
- innerHTML → 设置/获取 HTML 内容 - innerText / textContent → 文本内容 - setAttribute(name, val) / getAttribute(name) / removeAttribute(name) → 属性操作 - style → 操作行内样式 - classList.add() / .remove() / .toggle() → class 操作 |
document.getElementById() 等获取的结果就是 Element |
1 |
|
BOM(浏览器对象模型)
| 对象 | 定义(详细) | 常用属性 / 方法 | 说明 |
|---|---|---|---|
| window | 代表一个浏览器窗口或 <iframe> 框架,是 BOM 的顶级对象。所有全局变量、函数、DOM 对象、BOM 对象都挂在 window 上。 |
alert(msg) / confirm(msg) / prompt(msg) → 弹框setTimeout(fn, ms) / clearTimeout(id) → 定时器setInterval(fn, ms) / clearInterval(id) → 循环定时器innerWidth / innerHeight → 窗口可视区域大小scrollX / scrollY → 滚动条位置open(url) / close() → 打开/关闭窗口 |
BOM 核心对象,其他对象(location、history、navigator、screen、event)都是它的属性 |
| location | 表示 当前窗口的 URL 信息,可读取或修改地址栏,实现页面跳转、刷新。 | href → 当前 URLreload() → 刷新页面assign(url) → 跳转(可回退)replace(url) → 替换(不可回退) |
用得最多的 BOM 对象 |
| history | 表示 浏览器历史记录栈,允许前进、后退或跳转到指定页面。 | back() → 后退forward() → 前进go(n) → 前进/后退 n 步 |
出于安全考虑,不能获取具体 URL,只能操作历史栈 |
| navigator | 表示 浏览器自身和运行环境的信息(类型、版本、语言、是否联网)。 | userAgent → 浏览器标识language → 当前语言onLine → 是否联网 |
常用于浏览器环境检测 |
| screen | 表示 用户屏幕相关信息,与浏览器窗口无关。 | width / height → 屏幕分辨率availWidth / availHeight → 可用显示区大小 |
一般用于布局适配,全屏展示一般用于判断显示环境,比如全屏展示、适配布局 |
