--- title: Console slug: Web/API/Console tags: - API - Debugging - Interface - Reference - console - web console translation_of: Web/API/Console ---
Console
对象提供了浏览器控制台调试的接口(如:Firefox 的 Web Console)。在不同浏览器上它的工作方式可能不一样,但通常都会提供一套共性的功能。
Console
对象可以从任何全局对象中访问到,如 浏览器作用域上的 {{domxref("Window")}},以及通过属性控制台作为workers中的特定变体的 {{domxref("WorkerGlobalScope")}}。可以通过 {{domxref("Window.console")}} 引用,也可以简单的通过 console
引用。例:
console.log("Failed to open the specified link")
本页面记录了 Console
对象上的 {{anch("Methods")}}(方法)并给出了几个 {{anch("Usage")}} (用例)。
{{AvailableInWorkers}}
提示: 实际的 console
接口被定义为全小写的形式(比如不是这种形式 Console
),这是历史原因导致的。
false
,则将消息和堆栈跟踪记录到控制台。Console was cleared
。"debug"
级别的消息。error()
方法的别称。groupEnd()
来闭合组。group()
相同,不同的是,groupCollapsed()
方法打印出来的内容默认是折叠的。调用groupEnd()
来闭合组。console 对象中较多使用的主要有四个方法 {{domxref("console.log()")}}, {{domxref("console.info()")}}, {{domxref("console.warn()")}}, 和{{domxref("console.error()")}}。每一个结果在日志中都有不同的样式,可以使用浏览器控制台的日志筛选功能筛选出感兴趣的日志信息。
有两种途径使用这些方法,可以简单的传入一组对象,其中的字符串对象会被连接到一起,输出到控制台。或者可以传入包含零个或多个的替换的字符串,后面跟着被替换的对象列表。
The simplest way to use the logging methods is to output a single object:
var someObject = { str: "Some text", id: 5 }; console.log(someObject);
打印结果类似下面:
[09:27:13.475] ({str:"Some text", id:5})
可以打印多个对象,就像下面一样:
var car = "Dodge Charger"; var someObject = { str: "Some text", id: 5 }; console.info("My first car was a", car, ". The object is:", someObject);
打印结果类似下面:
[09:28:22.711] My first car was a Dodge Charger . The object is: ({str:"Some text", id:5})
可以在传递给 console 的方法的时候使用下面的字符以期进行参数的替换。
Substitution string | Description |
%o or %O |
打印 JavaScript 对象。在审阅器点击对象名字可展开更多对象的信息。 |
%d or %i |
打印整数。支持数字格式化。例如, console.log("Foo %.2d", 1.1) 会输出有先导 0 的两位有效数字: Foo 01 。 |
%s |
打印字符串。 |
%f |
打印浮点数。支持格式化,比如 console.log("Foo %.2f", 1.1) 会输出两位小数: Foo 1.10 |
注意:Chrome 不支持精确格式化。
当要替换的参数类型和预期的打印类型不同时,参数会被转换成预期的打印类型。
for (var i=0; i<5; i++) { console.log("Hello, %s. You've called me %d times.", "Bob", i+1); }
输出样例如下所示:
[13:14:13.481] Hello, Bob. You've called me 1 times. [13:14:13.483] Hello, Bob. You've called me 2 times. [13:14:13.485] Hello, Bob. You've called me 3 times. [13:14:13.487] Hello, Bob. You've called me 4 times. [13:14:13.488] Hello, Bob. You've called me 5 times.
可以使用 %c
为打印内容定义样式:
console.log("This is %cMy stylish message", "color: yellow; font-style: italic; background-color: blue;padding: 2px");
%c
语法可用的属性如下 (至少在 Firefox 中是这样,别的浏览器会有诸多不同):
text-*
属性 注意: 控制台信息的默认行为与行内元素相似。为了应用 padding
, margin
这类效果,你应当这样设置display: inline-block
.。
可以使用嵌套组来把视觉上相关的元素合并,以协助组织你的输出。使用console.group()
创建新的嵌套块,或者用console.groupCollapsed()
创建默认折叠的块,这种块需要点击闭合按钮来展开才能读到。
直接调用 console.groupEnd()
.就可以退出当前组。比如下面的代码:
console.log("This is the outer level"); console.group(); console.log("Level 2"); console.group(); console.log("Level 3"); console.warn("More of level 3"); console.groupEnd(); console.log("Back to level 2"); console.groupEnd(); console.debug("Back to the outer level");
执行结果:
你可以使用定时器来计算一段特定操作的周期。使用 console.time
()
方法以创建一个计时器,其唯一的参数表示了计时器的名字。使用 console.timeEnd
()
方法以关闭计时器,并获取经过的毫秒数,其同样以计时器的名字作为参数。一个页面最多同时只能有 10,000 个计数器运行。
示例::
console.time("answer time"); alert("Click to continue"); console.timeLog("answer time"); alert("Do a bunch of other stuff..."); console.timeEnd("answer time");
这段代码将会打印需要用户关闭 alert box 的时间, 打印时间到控制台上,等用户关闭第二个 alert 后,把结束时间打印到控制台。
注意无论在开始还是结束的时候都会打印计时器的名字。
控制台也支持输出堆栈,其将会显示到调用 {{domxref("console.trace()")}} 的点的调用路径。如下所示:
function foo() { function bar() { console.trace(); } bar(); } foo();
控制台的输出:
规范 | 状态 | 备注 |
---|---|---|
{{SpecName('Console API')}} | {{Spec2('Console API')}} | Initial definition. |
{{Compat("api.Console")}}
console
对象,那么它会覆盖掉浏览器内置的 console
对象,在其它浏览器可能也是。