console 对象与控制台
console 对象的静态方法
console.log
方法用于在控制台输出信息。它可以接受一个或多个参数,将它们连接起来输出。
1 | console.log('Hello World') |
console.log
方法会自动在每次输出的结尾,添加换行符。
1 | console.log(1); |
如果第一个参数是格式字符串(使用了格式占位符),console.log
方法将依次用后面的参数替换占位符,然后再进行输出。
1 | console.log(' %s + %s = %s', 1, 1, 2) |
上面代码中,console.log
方法的第一个参数有三个占位符(%s
),第二、三、四个参数会在显示时,依次替换掉这个三个占位符。
console.log
方法支持以下占位符,不同类型的数据必须使用对应的占位符。
%s
字符串%d
整数%i
整数%f
浮点数%o
对象的链接%c
CSS 格式字符串
1 | var number = 11 * 9; |
上面代码中,第二个参数是数值,对应的占位符是%d
,第三个参数是字符串,对应的占位符是%s
。
使用%c占位符时,对应的参数必须是 CSS 代码,用来对输出内容进行 CSS 渲染。
1 | console.log( |
上面代码运行后,输出的内容将显示为黄底红字。
console.log
方法的两种参数格式,可以结合在一起使用。
1 | console.log(' %s + %s ', 1, 1, '= 2') |
console.count()
count
方法用于计数,输出它被调用了多少次。
1 | function greet(user) { |
上面代码每次调用greet
函数,内部的console.count
方法就输出执行次数。
该方法可以接受一个字符串作为参数,作为标签,对执行次数进行分类。4
1 | function greet(user) { |
上面代码根据参数的不同,显示bob
执行了两次,alice
执行了一次。
console.time(),console.timeEnd()
这两个方法用于计时,可以算出一个操作所花费的准确时间。
1 | console.time('Array initialize'); |
time
方法表示计时开始,timeEnd
方法表示计时结束。它们的参数是计时器的名称。调用timeEnd
方法之后,控制台会显示“计时器名称: 所耗费的时间”。
console.group(),console.groupEnd(),console.groupCollapsed()
console.group
和console.groupEnd
这两个方法用于将显示的信息分组。它只在输出大量信息时有用,分在一组的信息,可以用鼠标折叠/展开。
1 | console.group('一级分组'); |
上面代码会将“二级分组”显示在“一级分组”内部,并且“一级分组”和“二级分组”前面都有一个折叠符号,可以用来折叠本级的内容。
console.groupCollapsed
方法与console.group
方法很类似,唯一的区别是该组的内容,在第一次显示时是收起的(collapsed
),而不是展开的。
1 | console.groupCollapsed('Fetching Data'); |
上面代码只显示一行”Fetching Data“,点击后才会展开,显示其中包含的两行。
console.trace(),console.clear()
console.trace
方法显示当前执行的代码在堆栈中的调用路径。
1 | console.trace() |
console.clear
方法用于清除当前控制台的所有输出,将光标回置到第一行。如果用户选中了控制台的“Preserve log”选项,console.clear
方法将不起作用。
控制台命令行 API
$_
$_
属性返回上一个表达式的值。
1 | // 4 |
$(selector)
$(selector)
返回第一个匹配的元素,等同于document.querySelector()
。注意,如果页面脚本对$
有定义,则会覆盖原始的定义。比如,页面里面有 jQuery,控制台执行$(selector)
就会采用 jQuery 的实现,返回一个数组。
$$(selector)
$$(selector)
返回选中的 DOM 对象,等同于document.querySelectorAll
。
$x(path)
$x(path)
方法返回一个数组,包含匹配特定 XPath
表达式的所有 DOM 元素。
1 | $x("//p[a]") |
上面代码返回所有包含a
元素的p
元素。
getEventListeners(object)
getEventListeners(object)
方法返回一个对象,该对象的成员为object登记了回调函数的各种事件(比如click
或keydown
),每个事件对应一个数组,数组的成员为该事件的回调函数。
monitorEvents(object[, events]) ,unmonitorEvents(object[, events])
monitorEvents(object[, events])
方法监听特定对象上发生的特定事件。事件发生时,会返回一个Event
对象,包含该事件的相关信息。unmonitorEvents
方法用于停止监听。
1 | monitorEvents(window, "resize"); |
上面代码分别表示单个事件和多个事件的监听方法。
monitorEvents
允许监听同一大类的事件。所有事件可以分成四个大类。
- mouse:”mousedown”, “mouseup”, “click”, “dblclick”, “mousemove”, “mouseover”, “mouseout”, “mousewheel”
- key:”keydown”, “keyup”, “keypress”, “textInput”
- touch:”touchstart”, “touchmove”, “touchend”, “touchcancel”
- control:”resize”, “scroll”, “zoom”, “focus”, “blur”, “select”, “change”, “submit”, “reset”上面代码表示监听所有
1
monitorEvents($("#msg"), "key");
key
大类的事件。
命令行 API 还提供以下方法。
clear():清除控制台的历史。
copy(object):复制特定 DOM 元素到剪贴板。
dir(object):显示特定对象的所有属性,是console.dir方法的别名。
dirxml(object):显示特定对象的 XML 形式,是console.dirxml方法的别名。
参考链接
- Chrome Developer Tools, Using the Console
- Matt West, Mastering The Developer Tools Console
- Firebug Wiki, Console API
- Axel Rauschmayer, The JavaScript console API
- Marius Schulz, Advanced JavaScript Debugging with console.table()
- Google Developer, Command Line API Reference