![Node.js应用开发](https://wfqqreader-1252317822.image.myqcloud.com/cover/512/53286512/b_53286512.jpg)
1.4 Node.js控制台Console
1.4.1 Console常用方法
Console对象提供了一个简单的调试控制台,类似于Web浏览器提供的JavaScript 控制台。使用Console对象的一系列方法可以将调试模式的信息输出到控制台。Console对象的常用方法及功能见表1-1。
表1-1 Console对象的常用方法及功能
![](https://epubservercos.yuewen.com/39F131/31751248507646906/epubprivate/OEBPS/Images/figure-0025-0029.jpg?sign=1739267573-8Buf8oeLaiGYBcjwGmdDx6pNDqOGpDES-0-6b1d49c7498569fdbd283f649208333c)
1. console. log()输出普通信息
console.log()方法可用于在控制台输出普通信息,如单个变量(表达式)、多个变量、换行以及格式化输出,类似于C语言中的printf()。格式化输出时可使用类似printf()风格的占位符,支持字符(%s)、整数(%d)、浮点数(%f)和对象(%o)4种占位符。
【示例1.1】console.log()输出普通信息。
console.log('Hello World!'); console.log('l', 'am', 'a', 'student.'); console.log('We are students.\nWe are learning Node.js.'); console.log('%d + %d = %d', 1, 1, 2); // 依次序输出所有字符串 console.log("%s", "Hello", "World!"); // 将对象转换为普通字符串后执行 console.log("%s", {school: "CClT"}); console.log("%o", {school: "CClT"}); //将字符串作为数值进行转换 console.log("今天是%d年%d月%d日",2021,01,26); console.log("圆周率是%f",3.1415926); // 输出% console.log("%%"); console.log("%%", "CClT","%%");
运行结果如图1-25所示。
![](https://epubservercos.yuewen.com/39F131/31751248507646906/epubprivate/OEBPS/Images/figure-0026-0030.jpg?sign=1739267573-JN7Te8lawRZ6ougcmItMg9hKMQsRmR93-0-143cfb308efcd75334fae6cb6da92c43)
图1-25 运行结果
【代码分析】
代码中第2行以逗号(,)隔开的参数在输出时以空格连接。在第3行中,“\n”表示输出一个换行符。%d、%s、%f、%o分别以整数、字符串、浮点数和对象来输出参数。最后一行,在格式化输出时,“%%”表示在第二个参数输出前加一个“%”,第三个参数“%%”不作为格式化规范使用,所以按字符串正常输出。格式化字符及含义见表1-2。
说明
本书中代码加粗部分表示需要重点关注,以下代码标注用意相同。
表1-2 格式化字符及含义
![](https://epubservercos.yuewen.com/39F131/31751248507646906/epubprivate/OEBPS/Images/figure-0026-0031.jpg?sign=1739267573-vhgUtwFE6C9GQxZ80YmU34GEZTY8Vspw-0-05e283de55c73a2afd6f550820d9e9de)
2. console. info()输出提示信息
console.info()方法可以用于在控制台输出提示信息,该方法对于开发过程进行测试很有帮助。
【示例1.2】console.info()输出提示信息。
console.info('数据传输成功!'); var myObj = { publish: "人民邮电出版社", site :"https://www.ptpress.com.cn" }; console.info(myObj); var myArr = ["Baidu", "Taobao", "Runoob"]; console.info(myArr);
运行结果如图1-26所示。
![](https://epubservercos.yuewen.com/39F131/31751248507646906/epubprivate/OEBPS/Images/figure-0026-0032.jpg?sign=1739267573-MIPvszHNe3ehqmEWjvxSHedoSf9AWxnU-0-c7e0d434be1c63f8327e5aa7ee1565fa)
图1-26 运行结果
【代码分析】
console.info()方法可以输出一个字符串,也可以输出对象和数组。
3. console. error()输出错误信息
console.error()方法用于输出错误信息到控制台,该方法对于开发过程进行测试也很有帮助。
【示例1.3】console.error()输出错误信息。
console.error('数据格式错误!'); var myObj = { publisher : "人民邮电出版社", site : "https://www.ptpress.com.cn" }; console.error(myObj); var myArr = ["PHP", "Node.js", "JSP"]; console.error(myArr);
运行结果如图1-27所示。
![](https://epubservercos.yuewen.com/39F131/31751248507646906/epubprivate/OEBPS/Images/figure-0027-0033.jpg?sign=1739267573-LqoW1VrByRG1DvuPLQEnpliKwsma88cZ-0-779b29a2a9fafac47dad11244b4239a0)
图1-27 运行结果
【代码分析】
console.error()方法在控制台以红色文字打印以上字符串、对象和数组信息。
4. console. warn()输出警示信息
console.warn()方法用于输出警示信息到控制台,该方法对于开发过程进行测试也很有帮助。在Node.js中可以使用console.warn()方法来代替console.error()方法,两个方法的使用方法完全相同。
【示例1.4】console.warn()输出警示信息。
console.warn('数据格式错误!');
运行显示为:
数据格式错误!
【代码分析】
console.warn()方法在控制台以红色文字打印以上字符串信息。
5. console. dir()输出对象信息
console.dir()方法可以显示一个对象的所有属性和方法。
【示例1.5】console.dir()输出对象信息。
var myObj = { publisher : "人民邮电出版社", site : "https://www.ptpress.com.cn}"; console.dir(myObj);
运行结果如图1-28所示。
![](https://epubservercos.yuewen.com/39F131/31751248507646906/epubprivate/OEBPS/Images/figure-0027-0034.jpg?sign=1739267573-YrlvSPBXvcTSaUQziyX6cDw8F1MoEpKx-0-689a5c609002f5de802ce0d2da643cd1)
图1-28 运行结果
【代码分析】
console.dir()方法在控制台显示一个对象的所有属性和方法。
6. console. table()输出表格
console.table()方法用来在控制台输出一个表格。
【示例1.6】console.table()输出表格。
console.table(["PHP", "Node.js", "JSP"]); console.table({"C1": "PHP", "C2": "Node.js", "C3": "JSP"});
运行结果如图1-29所示。
![](https://epubservercos.yuewen.com/39F131/31751248507646906/epubprivate/OEBPS/Images/figure-0028-0035.jpg?sign=1739267573-bGtfDfcKhnohAYQVAi4Zr7VGj0JINg0r-0-a4528e2c969c12aa9648571ee78aee66)
图1-29 运行结果
【代码分析】
console.table()方法在控制台可以将一个数组或者对象以表格方式输出。当将数组转换成表格时,第一列为数组元素的索引值;当将对象转换成表格时,第一列为对象的“键”值。
7. console. time()和console. timeEnd()用于计时
若需要统计某个算法的运行时间,可以使用 console.time()方法和console.timeEnd()方法,这两个方法都要接受一个字符串作为参数,两个方法的参数要相同,这样才能正确计算出算法从开始到结束运行的时间。
【示例1.7】console.time()和console. timeEnd()计时提示信息。
console.time("Tag"); var sum=0 for(var i=1;i<=100000;i++){ sum +=i; } console.log(sum); console.timeEnd("Tag");
运行显示为:
5000050000 Tag: 3.819ms
【代码分析】
运行结果第一行为1~100000所有整数之和,第二行显示运算所用的时间为3.819ms。
8. console. assert()评估表达式
console.assert()在第一个参数值为false的情况下会在控制台输出信息。
【示例1.8】console.assert()方法评估表达式后输出信息。
console.assert(12 == 11, "error 12==11");
console.assert(11 == 11, "什么都不做");
运行显示为:
Assertion failed: error 12==11
【代码分析】
console.assert()对表达式结果进行评估,如果该表达式的执行结果为 false,则输出一个消息字符串并抛出AssertionError异常。若参数表达式返回true,则该语句什么都不做。
需要说明的是,对于 console.log()、console.info()、console.error()、console.warn()和console.dir()方法的输出结果在HBuilder中的区别不是特别明显,可以使用浏览器中的控制台来进行调试。
9.浏览器控制台输出消息
打开Chrome浏览器,按<F12>键,在调试窗口选择“console”,输入示例1.9所示代码。
【示例1.9】浏览器控制台输出消息。
console.log('数据传输成功!'); console.info('数据传输成功!'); console.error('数据格式错误!'); console.warn('数据格式错误!'); var myObj = { publisher : "人民邮电出版社", site : "https://www.ptpress.com.cn" }; console.dir(myObj);
运行结果如图1-30所示。
![](https://epubservercos.yuewen.com/39F131/31751248507646906/epubprivate/OEBPS/Images/figure-0029-0036.jpg?sign=1739267573-yBTmniFVBu2GiIC4lMzEAuetnCSdiouf-0-4c7c9f18329637b90313d4abbb21e573)
图1-30 运行结果
【代码分析】
在浏览器窗口的控制台中会使用不同的文字颜色和图标来表示不同方法对应的信息提示,展开对象数据,可以查看其属性。