ECMAScript 基础语法
本页关键词:数据类型、类型转换、模板字符串、全等比较、自增运算符、数组操作、函数、逻辑短路
一、基本概述与 I/O
ECMAScript(ES)是 JavaScript 的官方语言标准,由 ECMA International 制定。从 ES5、ES6 到每年更新的 ES2024,定义了语法、核心 API 与语言特性。浏览器和 Node.js 中的 JavaScript 均为其实现。
基础输出:document.write、alert、console.log
输入:prompt 读取的默认是 string 类型;变量前加 + 可转为 number。
二、数据类型与类型转换
类型检测与转换方法
| 操作 | 方法 |
|---|---|
| 类型检测 | typeof x |
| 转数字 | Number()、parseInt()、parseFloat() |
| 转字符串 | String()、toString() |
JS 类型转换写法类似 C++ 中的 (目标类型),但去掉括号。
三、模板字符串与比较运算符
模板字符串
模板字符串 ` 支持代码内直接换行;单引号 '' 需 \n 才能换行。使用 ${变量} 插值。
比较运算符
==:会隐式类型转换;===:要求类型和值都相等!==表示严格不等于- 建议:判断语句(if / switch / 循环)中统一使用
===,避免使用==
面试要点:
==的隐式转换易出错,实际开发优先使用严格相等。
四、调试与自增运算符
断点调试
开发者工具 → Source → 选择文件进行断点调试。
前增 / 后增差异
| 场景 | 前增 ++a / 后增 a++ 差异 |
|---|---|
立即赋值 let x = a++ | 有差异 |
立即打印或参与运算 console.log(a++) | 有差异 |
作为数组索引 arr[i++] | 有差异 |
在 return 语句中 | 有差异 |
在条件判断里 while(i++ < 5) | 有差异 |
| 场景 | 效果相同 |
|---|---|
for 循环增量 i++ | 相同 |
单独一行 i++; | 相同 |
不关心返回值的函数参数 func(i++) | 相同 |
五、数组操作
数组增删改查常用方法:
| 方法 | 作用 |
|---|---|
push | 末尾添加 |
unshift | 开头添加 |
pop | 末尾删除 |
shift | 开头删除 |
splice | 指定位置增删改 |
六、函数
函数规范
- 命名:动词 + 小驼峰
- 参数可设默认值,否则可能得到
NaN - 返回多个值可使用数组
return [a, b] - 变量冲突:就近原则
匿名函数与立即执行函数
立即执行函数(IIFE)无需调用即可执行,常用于防止变量污染。本质仍是函数调用,仅封装为表达式形式。
七、逻辑运算符与类型转换
逻辑中断(短路)
javascript
function getSum(x, y) {
x = x || 0;
y = y || 0;
console.log(x + y);
}
getSum(1, 2);&&:左边为 false 时短路,不执行右侧||:左边为 true 时短路,不执行右侧
javascript
console.log(11 && 22); // 22
(11 || 22); // 11
(false || a++); // 不执行 a++
(true || a++); // 不执行 a++显式转 Boolean
以下为 false:''、0、undefined、null、false、NaN;其余为 true。
隐式类型转换
| 场景 | 结果 |
|---|---|
| 有字符串的加法 | '' + 1 → "1" |
| 减法 | "" 转为 0 |
| 数字变换 | null → 0,undefined → NaN |
面试要点:逻辑短路常用于参数默认值与条件判断;
null与undefined转数字结果不同。