二、console {Object}
如大多数浏览器中的 console 对象一样,其输出会发送到 stdout 或 stderr 中。
1. console.log([data], […])
可以接受多个参数,如有字符替换,则默认后续以逗号分隔的参数会替换成相应的字符,如:
console.log('打印出数字: %d', '1234', '\n没有替换', '\n%s: %s', '第一个\%s', '第二个\%s');
// 打印出数字: 1234
// 没有替换
// %s: %s 第一个%s 第二个%s
默认支持 3 种类型的字符替换操作,%s, %d, %j。分别代表字符串、数字和JSON。间个 % 并不会替换。
与 console.log()
还有几个兄弟:
- console.info
- console.error 但输出到 stderr
- console.warn 同上
- console.dir 在全局对象中已经介绍过,输出对象下的属性/方法
- console.trace(label) 打印一个名为 label 的堆栈信息到 stderr
2. console.time(label) / console.timeEnd(lable)
计算程序运行时间的利器,计算 time 和 timeEnd 之间代码的运算时间,以 label 名来确定一个区间的内容,假设我们创建一个 label 名为 sofish 的计时器,如:
// 这有点类似于 html 的 <div id="sofish"> ... </div>
// 会计算名字为 _sofish_ 的这个区间内 for 循环的运行时间
console.time('sofish');
for(var i = 0; i < 1000; i++){
console.log('计算这 for 循环的运算时间');
};
console.timeEnd('sofish');
// 在我的机器返回: sofish: 26ms
3. console.assert(expression, [message])
与 assert.ok()
一样,当 expression
这个传入的表达式返回 false 的话,抛出一个 AssertionError,message
为自定义信息。
console.assert(1===0, '出错了')
// AssertionError: 出错了
// at Object.exports.assert (console.js:75:23)
// ...
// 如果不指定 message,则返回表达式计算结果
console.assert(1==0)
// AssertionError: false == true
// at Object.exports.assert (console.js:75:23)
// ...
可能和你常用的测试用例的写法一样。当然,你完全可以用它来做测试用例,或者代替 throw new Error('hello')
。