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

张开发
2026/4/17 13:49:02 15 分钟阅读

分享文章

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 i0; i100000; i){};console.timeEnd(‘循环耗时’);console.assert()断言验证条件为 false 时抛出错误信息用于验证逻辑是否符合预期console.assert(113, ‘11计算错误’);我们可以在浏览器中测试相关的代码我们打开浏览器按下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张三;constage25;conststr1姓名name年龄(age1)岁;console.log(str1);// 输出姓名张三年龄26岁// 模板字符串简洁conststr2姓名${name}年龄${age1}岁;console.log(str2);// 输出姓名张三年龄26岁说明${} 内部可以是变量、算术表达式、函数调用、三元运算符等任意合法的 JS 表达式 例如嵌入函数调用functiongetScore(){return90;}conststr成绩${getScore()5}分;console.log(str);// 输出成绩95分2多行字符串无需转义换行传统字符串换行需要用 \n 或拼接模板字符串可直接换行// 传统多行字符串麻烦 const html1 div\np姓名张三/p\np年龄25/p\n/div; // 模板字符串直观 const html2 divp姓名${name}/pp年龄${age}/p/div; console.log(html2); // 输出保留换行和空格 //div//p姓名张三/p//p年龄25/p///div3嵌入对象与复杂数据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王五;constage22;constresultformatUser用户${name}年龄${age}岁;console.log(result);// 输出用户王五年龄22岁验证成年4.注意事项1反引号本身需要转义如果字符串中包含反引号需用 \ 转义例如const str 反引号 ;2 ${} 内部不能嵌套 ${}但可以嵌套模板字符串用反引号包裹3模板字符串的性能与传统拼接接近日常开发无需担心性能问题。三、变量解构赋值解构赋值这是 ES6 引入的便捷语法能让你从数组或对象中快速提取值并赋值给变量Node.js 完全支持该特性日常开发中用它能大幅简化代码。解构赋值Destructuring Assignment本质是 “模式匹配”—— 将数组 / 对象的结构与变量结构对应自动提取对应位置 与属性的值替代传统的逐个赋值方式。1.数组解构最常用场景适用于从数组中按位置提取值// 传统方式繁琐constarr[10,20,30];constaarr[0];constbarr[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,s40]arr;console.log(s);// 输出402.对象解构适用于从对象中按属性名提取值是 Node.js 开发中最常用的解构场景比如解构模块、函数返回值// 基础示例constuser{name:张三,age:25,city:北京};// 传统方式constuserNameuser.name;constuserAgeuser.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 赵六

更多文章