当前位置: 首页 > news >正文

Node.js从0到1:console对象、模板字符串、变量解构赋值

Node.js 基础语法是入门开发的核心,本文整理了开发中高频实用的 console 方法、模板字符串与解构赋值知识点,助力快速上手、提升开发效率。

一、console对象

1.console对象的常用方法以及功能

方法名功能示例
console.log()通用信息输出,最常用,支持多参数和格式化console.log(‘姓名:%s’, ‘张三’);
console.error()错误信息输出,与普通日志分离,部分终端标红显示console.error(‘数据库连接失败’);
console.info()信息类提示输出,语义上侧重 “通知 / 提示”,功能等同于 logconsole.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})
%cCSS 样式(仅浏览器有效,Node.js 忽略)

二、模板字符串

模板字符串(Template Literals),这是 ES6 引入的字符串新特性,相比传统字符串拼接,它更简洁、功能更强大,在 Node.js 中完全支持,是日常开发中处理字符串的首选方式。

1.基本概念

模板字符串使用 反引号(`) 包裹(而非单引号 / 双引号),核心优势是:

  • 支持多行字符串,无需手动拼接换行符;
  • 支持变量 / 表达式嵌入,通过 ${} 语法直接插入;
  • 支持标签模板(进阶用法),可自定义字符串处理逻辑。

2.基础用法

(1)基础:嵌入变量、表达式

// 传统字符串拼接constname='张三';constage=25;conststr1='姓名:'+name+',年龄:'+(age+1)+'岁';console.log(str1);// 输出:姓名:张三,年龄:26岁// 模板字符串(简洁)conststr2=`姓名:${name},年龄:${age+1}`;console.log(str2);// 输出:姓名:张三,年龄:26岁

说明:

${} 内部可以是变量、算术表达式、函数调用、三元运算符等任意合法的 JS 表达式; 例如嵌入函数调用:

functiongetScore(){return90;}conststr=`成绩:${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)嵌入对象与复杂数据

constuser={name:'李四',age:30,address:{city:'北京'}};// 直接嵌入对象(默认输出 [object Object])conststr1=`用户信息:${user}`;console.log(str1);// 输出:用户信息:[object Object]// 格式化嵌入对象(推荐)conststr2=`用户信息:${JSON.stringify(user,null,2)}`;console.log(str2);// 输出:// 用户信息:{// "name": "李四",// "age": 30,// "address": {// "city": "北京"// }// }

3.进阶语法

标签模板是模板字符串的高级特性,允许你自定义函数处理模板字符串的内容,常用于格式化、转义等场景:

// 定义一个标签函数(参数:字符串数组 + 所有嵌入的表达式值)functionformatUser(strings,nameVal,ageVal){// strings 是模板字符串中除了表达式外的部分组成的数组console.log(strings);// 输出:[ '用户:', ',年龄:', '岁' ]// 自定义处理逻辑(比如给年龄加单位、姓名加引号)return`${strings[0]}'${nameVal}'${strings[1]}${ageVal}${strings[2]}(验证:成年)`;}// 使用标签模板constname='王五';constage=22;constresult=formatUser`用户:${name},年龄:${age}`;console.log(result);// 输出:用户:'王五',年龄:22岁(验证:成年)

4.注意事项

(1)反引号本身需要转义:如果字符串中包含反引号,需用 \ 转义,例如:const str = 反引号:` ;;

(2) ${} 内部不能嵌套 ${},但可以嵌套模板字符串(用反引号包裹);

(3)模板字符串的性能与传统拼接接近,日常开发无需担心性能问题。

三、变量解构赋值

解构赋值,这是 ES6 引入的便捷语法,能让你从数组或对象中快速提取值并赋值给变量,Node.js 完全支持该特性,日常开发中用它能大幅简化代码。

解构赋值(Destructuring Assignment)本质是 “模式匹配”—— 将数组 / 对象的结构与变量结构对应,自动提取对应位置 与属性的值,替代传统的逐个赋值方式。

1.数组解构(最常用场景)

适用于从数组中按位置提取值:

// 传统方式(繁琐)constarr=[10,20,30];consta=arr[0];constb=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);// 输出:10console.log(rest);// 输出:[20, 30]// 3. 默认值:当对应位置无值时使用默认值const[p,q,r,s=40]=arr;console.log(s);// 输出:40

2.对象解构

适用于从对象中按属性名提取值,是 Node.js 开发中最常用的解构场景(比如解构模块、函数返回值):

// 基础示例constuser={name:'张三',age:25,city:'北京'};// 传统方式constuserName=user.name;constuserAge=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. 解构嵌套对象constperson={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. 函数参数解构(简化参数处理)functionprintUser({name,age}){console.log(`姓名:${name},年龄:${age}`);}printUser({name:'王五',age:30});// 输出:姓名:王五,年龄:30// 2. 解构函数返回值(比如异步函数返回的对象)asyncfunctiongetUser(){return{id:2,name:'赵六',age:28};}const{id,name}=awaitgetUser();// 直接解构返回值console.log(id,name);// 输出:2 赵六

http://www.jsqmd.com/news/623904/

相关文章:

  • 为什么92%的大模型项目在上线后成本超支3倍?:2026 Gartner实测数据+3家独角兽成本治理SOP
  • 【LLM生产环境十大致命故障】:GPU显存泄漏、KV Cache溢出、Tokenizer漂移——附自动巡检脚本
  • 从Dockerfile到容器守护:打造一个能“自己醒来”的Ubuntu容器(实战记录)
  • WarcraftHelper:让经典魔兽争霸III在现代电脑上重获新生的终极优化指南
  • 3D高斯泼溅研究02《元宇宙白皮书(2023)第一性原理分析:任务拆解、挑战根源、洞察创新与潜在缺陷》
  • 南麟LN1176 低功耗高输入电压CMOS电压稳压器
  • Legacy-iOS-Kit:一站式iOS设备降级与越狱完整指南
  • Qwen3.5-9B镜像部署教程:免编译、免依赖安装,开箱即用多模态对话平台
  • 别把 ABAP Released API 当成万能通行证,API Catalog 才是你在不同系统环境里真正要看懂的那道门
  • 5分钟掌握在Windows上直接安装安卓应用的革命性方案
  • 2026年4月知名的斗提机厂商推荐,斗提机/板链斗式提升机/皮带斗提机/斗式提升机/皮带斗式提升机,斗提机公司口碑分析 - 品牌推荐师
  • C语言期末突击:手把手教你搞定吉林大学计算机系高频考题(附完整代码)
  • 智能压缩包密码恢复实战:解密高效数据访问新方案
  • 在 Babylon.js 中掌控“世界旋转“:解开 3ds Max 导出模型的层级枷锁
  • 显卡显存终极检测指南:5分钟发现隐藏故障的Vulkan神器
  • 国产FPGA进阶:紫光PDS中adf网表的5种应用场景与性能对比
  • 如何在Windows上快速安装苹果设备驱动程序:告别连接烦恼的终极方案
  • GAMES101作业0:从零搭建图形学开发环境
  • 1 1.8 使用“相机”拍照(以及:上手体验——使用“录音机”录音)
  • 项目介绍 MATLAB实现基于VMD-LSTM-Transformer变分模态分解(VMD)结合长短期记忆网络(LSTM)和Transformer编码器进行多变量时间序列光伏功率预测的详细项目实例(含
  • 永久保存你的QQ空间记忆:GetQzonehistory开源工具使用指南
  • 深圳吸塑反光杯制造企业价格盘点 - 工业推荐榜
  • Mac外接显示器必看:从排列到亮度调节的完整避坑指南
  • Geo-SAM:如何在5分钟内完成遥感图像智能分割
  • Linux开发环境无缝衔接:Phi-4-mini-reasoning在WSL2中的部署与使用
  • League Akari:英雄联盟玩家的终极智能辅助工具,提升游戏体验的完整解决方案
  • 【MATLAB源码-第414期】基于MATLAB的室内可见光通信的LED功率配置与多灯均匀布局联合优化面向全空间达标覆盖的仿真
  • VideoAgentTrek Screen Filter与数据库联动:构建视频元数据管理与检索系统
  • 深度解析GreaterWMS:企业级开源库存管理系统的架构揭秘与实战部署指南
  • 50+ RPG Maker插件终极指南:快速提升游戏开发效率的完整教程