Node.js 基础语法是入门开发的核心,本文整理了开发中高频实用的 console 方法、模板字符串与解构赋值知识点,助力快速上手、提升开发效率。
一、console对象
1.console对象的常用方法以及功能
| 方法名 | 功能 | 示例 | |
| console.log() | 通用信息输出,最常用,支持多参数和格式化 | console.log(‘姓名:%s’, ‘张三’); | |
| console.error() | 错误信息输出,与普通日志分离,部分终端标红显示 | console.error(‘数据库连接失败’); | |
| console.info() | 信息类提示输出,语义上侧重 “通知 / 提示”,功能等同于 log | console.info(‘服务已启动,端口:3000’); | |
| console.warn() | 警告信息输出,语义上侧重 “非致命问题”,部分终端标黄显示 | console.warn(‘内存使用率超过80%’); | |
| console.dir() | 精细化打印对象 / 数组,可配置展示深度,比 log 更适合复杂对象 | const obj = {a:1, b:{c:2, d:{e:3}}};console.dir(obj, {depth: 2}); | |
| console.table() | 将数组 / 对象以表格形式输出,直观展示结构化数据(如列表、配置) | const users = [{name:'张三',age:25},{name:'李四',age:30}];console.table(users); | |
console.time() +console.timeEnd() | 统计代码执行耗时,用于性能分析,需传入相同的标签名 | console.time('循环耗时');for(let i=0; i<100000; i++){};console.timeEnd('循环耗时'); | |
| console.assert() | 断言验证,条件为 false 时抛出错误信息,用于验证逻辑是否符合预期 | console.assert(1+1===3, ‘1+1计算错误’); |
我们可以在浏览器中测试相关的代码,我们打开浏览器,按下F12,然后输入相关的代码,可以进行验证。
比如下面这样:



2.格式化字符及含义
| 占位符 | 说明 | 示例 |
| %s | 字符串 | console.log(‘Hi %s’, ‘Tom’) |
| %d/%i | 整数(十进制) | console.log(‘数字 %d’, 123) |
| %f | 浮点数 | console.log(‘浮点数 %f’, 3.1415) |
| %o | 详细对象(可展开) | console.log(‘对象 %o’, {a:1}) |
| %c | CSS 样式(仅浏览器有效,Node.js 忽略) |
二、模板字符串
模板字符串(Template Literals),这是 ES6 引入的字符串新特性,相比传统字符串拼接,它更简洁、功能更强大,在 Node.js 中完全支持,是日常开发中处理字符串的首选方式。
1.基本概念
模板字符串使用 反引号(`) 包裹(而非单引号 / 双引号),核心优势是:
- 支持多行字符串,无需手动拼接换行符;
- 支持变量 / 表达式嵌入,通过
${}语法直接插入; - 支持标签模板(进阶用法),可自定义字符串处理逻辑。
2.基础用法
(1)基础:嵌入变量、表达式
// 传统字符串拼接
const name = '张三';
const age = 25;
const str1 = '姓名:' + name + ',年龄:' + (age + 1) + '岁';
console.log(str1); // 输出:姓名:张三,年龄:26岁
// 模板字符串(简洁)
const str2 = `姓名:${name},年龄:${age + 1}岁`;
console.log(str2); // 输出:姓名:张三,年龄:26岁
说明:
${} 内部可以是变量、算术表达式、函数调用、三元运算符等任意合法的 JS 表达式; 例如嵌入函数调用:
function getScore() {
return 90;
}
const str = `成绩:${getScore() + 5}分`;
console.log(str); // 输出:成绩:95分
(2)多行字符串(无需转义换行)
传统字符串换行需要用 \n 或拼接,模板字符串可直接换行:
// 传统多行字符串(麻烦)
const html1 = '<div>\n <p>姓名:张三</p>\n <p>年龄:25</p>\n</div>';
// 模板字符串(直观)
const html2 = `<div>
<p>姓名:${name}</p>
<p>年龄:${age}</p>
</div>`;
console.log(html2);
// 输出(保留换行和空格):
// <div>
// <p>姓名:张三</p>
// <p>年龄:25</p>
// </div>
(3)嵌入对象与复杂数据
const user = { name: '李四', age: 30, address: { city: '北京' } };
// 直接嵌入对象(默认输出 [object Object])
const str1 = `用户信息:${user}`;
console.log(str1); // 输出:用户信息:[object Object]
// 格式化嵌入对象(推荐)
const str2 = `用户信息:${JSON.stringify(user, null, 2)}`;
console.log(str2);
// 输出:
// 用户信息:{
// "name": "李四",
// "age": 30,
// "address": {
// "city": "北京"
// }
// }
3.进阶语法
标签模板是模板字符串的高级特性,允许你自定义函数处理模板字符串的内容,常用于格式化、转义等场景:
// 定义一个标签函数(参数:字符串数组 + 所有嵌入的表达式值)
function formatUser(strings, nameVal, ageVal) {
// strings 是模板字符串中除了表达式外的部分组成的数组
console.log(strings); // 输出:[ '用户:', ',年龄:', '岁' ]
// 自定义处理逻辑(比如给年龄加单位、姓名加引号)
return `${strings[0]}'${nameVal}'${strings[1]}${ageVal}${strings[2]}(验证:成年)`;
}
// 使用标签模板
const name = '王五';
const age = 22;
const result = formatUser`用户:${name},年龄:${age}岁`;
console.log(result); // 输出:用户:'王五',年龄:22岁(验证:成年)
4.注意事项
(1)反引号本身需要转义:如果字符串中包含反引号,需用 \ 转义,例如:const str = 反引号:` ;;
(2) ${} 内部不能嵌套 ${},但可以嵌套模板字符串(用反引号包裹);
(3)模板字符串的性能与传统拼接接近,日常开发无需担心性能问题。
三、变量解构赋值
解构赋值,这是 ES6 引入的便捷语法,能让你从数组或对象中快速提取值并赋值给变量,Node.js 完全支持该特性,日常开发中用它能大幅简化代码。
解构赋值(Destructuring Assignment)本质是 “模式匹配”—— 将数组 / 对象的结构与变量结构对应,自动提取对应位置 与属性的值,替代传统的逐个赋值方式。
1.数组解构(最常用场景)
适用于从数组中按位置提取值:
// 传统方式(繁琐)
const arr = [10, 20, 30];
const a = arr[0];
const b = arr[1];
console.log(a, b); // 输出:10 20
// 解构赋值(简洁)
const [x, y, z] = arr;
console.log(x, y, z); // 输出:10 20 30
// 1. 忽略部分值
const [m, , n] = arr; // 忽略第二个值
console.log(m, n); // 输出:10 30
// 2. 剩余值(...):提取剩余所有值为新数组
const [first, ...rest] = arr;
console.log(first); // 输出:10
console.log(rest); // 输出:[20, 30]
// 3. 默认值:当对应位置无值时使用默认值
const [p, q, r, s = 40] = arr;
console.log(s); // 输出:40
2.对象解构
适用于从对象中按属性名提取值,是 Node.js 开发中最常用的解构场景(比如解构模块、函数返回值):
// 基础示例
const user = { name: '张三', age: 25, city: '北京' };
// 传统方式
const userName = user.name;
const userAge = user.age;
// 解构赋值(属性名需匹配)
const { name, age } = user;
console.log(name, age); // 输出:张三 25
// 1. 重命名变量(避免命名冲突)
const { name: uname, age: uage } = user;
console.log(uname, uage); // 输出:张三 25
// 2. 默认值:属性不存在时使用默认值
const { name, gender = '男' } = user;
console.log(gender); // 输出:男
// 3. 解构嵌套对象
const person = { info: { id: 1, name: '李四' } };
const { info: { id, name: pname } } = person;
console.log(id, pname); // 输出:1 李四
// 4. Node.js 实战:解构模块(比如fs模块的方法)
const { readFile, writeFile } = require('fs/promises'); // 直接解构出需要的方法
3.例子
// 1. 函数参数解构(简化参数处理)
function printUser({ name, age }) {
console.log(`姓名:${name},年龄:${age}`);
}
printUser({ name: '王五', age: 30 }); // 输出:姓名:王五,年龄:30
// 2. 解构函数返回值(比如异步函数返回的对象)
async function getUser() {
return { id: 2, name: '赵六', age: 28 };
}
const { id, name } = await getUser(); // 直接解构返回值
console.log(id, name); // 输出:2 赵六
