静态方法

console.log(),console.info(),console.debug()

console.log方法用于在控制台输出信息。它可以接受一个或多个参数,将它们连接起来输出,console.log方法会自动在每次输出的结尾,添加换行符

  1. console.log('Hello World')
  2. // Hello World
  3. console.log('a', 'b', 'c')
  4. // a b c
  5. console.log(1);
  6. console.log(2);
  7. console.log(3);
  8. // 1
  9. // 2
  10. // 3

如果第一个参数是格式字符串(使用了格式占位符),console.log方法将依次用后面的参数替换占位符,然后再进行输出

console.log(' %s + %s = %s', 1, 1, 2) // 1 + 1 = 2

console.log方法支持以下占位符,不同类型的数据必须使用对应的占位符。

  • %s 字符串
  • %d 整数
  • %i 整数
  • %f 浮点数
  • %o 对象的链接
  • %c CSS 格式字符串
  1. var number = 11 * 9;
  2. var color = 'red';
  3. console.log('%d %s balloons', number, color);
  4. // 99 red balloons

如果参数是一个对象,console.log会显示该对象的值

  1. console.log({foo: 'bar'})
  2. // Object {foo: "bar"}
  3. console.log(Date)
  4. // function Date() { [native code] }

console.info是console.log方法的别名,用法完全一样。只不过console.info方法会在输出信息的前面,加上一个蓝色图标。

console对象的所有方法,都可以被覆盖。因此,可以按照自己的需要,定义console.log方法

  1. ['log', 'info', 'warn', 'error'].forEach(function(method) {
  2. console[method] = console[method].bind(
  3. console,
  4. new Date().toISOString()
  5. );
  6. });
  7. console.log("出错了!");
  8. // 2014-05-18T09:00.000Z 出错了!

使用%c占位符时,对应的参数必须是 CSS 代码,用来对输出内容进行 CSS 渲染

  1. console.log(
  2. '%cThis text is styled!',
  3. 'color: red; background: yellow; font-size: 24px;'
  4. )

console.warn(),console.error()

warn方法和error方法也是在控制台输出信息,它们与log方法的不同之处在于,warn方法输出信息时,在最前面加一个黄色三角,表示警告;error方法输出信息时,在最前面加一个红色的叉,表示出错。同时,还会高亮显示输出文字和错误发生的堆栈。其他方面都一样

  1. console.error('Error: %s (%i)', 'Server is not responding', 500)
  2. // Error: Server is not responding (500)
  3. console.warn('Warning! Too few nodes (%d)', document.childNodes.length)
  4. // Warning! Too few nodes (1)

console.table() console.count()

console.table()将复合数据转换为表格

  1. var languages = [
  2. { name: "JavaScript", fileExtension: ".js" },
  3. { name: "TypeScript", fileExtension: ".ts" },
  4. { name: "CoffeeScript", fileExtension: ".coffee" }
  5. ];
  6. console.table(languages);

console对象和控制台 - 图1

count方法用于计数,输出它被调用了多少次,该方法可以接受一个字符串作为参数,作为标签,对执行次数进行分类

  1. function greet(user) {
  2. //console.count();
  3. console.count(user);
  4. return 'hi ' + user;
  5. }
  6. greet('bob')
  7. // : 1
  8. // "hi bob"
  9. greet('alice')
  10. // : 2
  11. // "hi alice"
  12. greet('bob')
  13. // : 3
  14. // "hi bob"

console.dir(),console.dirxml()

dir方法用来对一个对象进行检查(inspect),并以易于阅读和打印的格式显示
该方法对于输出 DOM 对象非常有用,因为会显示 DOM 对象的所有属性

  1. console.log({f1: 'foo', f2: 'bar'})
  2. // Object {f1: "foo", f2: "bar"}
  3. console.dir({f1: 'foo', f2: 'bar'})
  4. // Object
  5. // f1: "foo"
  6. // f2: "bar"
  7. // __proto__: Object

dirxml方法主要用于以目录树的形式,显示 DOM 节点
console.dirxml(document.body)
如果参数不是 DOM 节点,而是普通的 JavaScript 对象,console.dirxml等同于console.dir

console.assert()

console.assert方法主要用于程序运行过程中,进行条件判断,如果不满足条件,就显示一个错误,但不会中断程序执行。这样就相当于提示用户,内部状态不正确

它接受两个参数,第一个参数是表达式,第二个参数是字符串。只有当第一个参数为false,才会提示有错误,在控制台输出第二个参数,否则不会有任何结果

  1. var x = 0
  2. if(x<1){
  3. console.assert(false,'范围错误')
  4. }
  5. console.log(x)
  6. //Assertion failed: 防伪错误
  7. //0

console.time(),console.timeEnd()

这两个方法用于计时,可以算出一个操作所花费的准确时间

  1. console.time('Array initialize');
  2. var array= new Array(1000000);
  3. for (var i = array.length - 1; i >= 0; i--) {
  4. array[i] = new Object();
  5. };
  6. console.timeEnd('Array initialize');
  7. //Array initialize: 2795.761ms

console.trace(),console.clear()

console.trace方法显示当前执行的代码在堆栈中的调用路径

  1. console.trace()
  2. // console.trace()
  3. // (anonymous function)
  4. // InjectedScript._evaluateOn
  5. // InjectedScript._evaluateAndWrap
  6. // InjectedScript.evaluate

console.clear方法用于清除当前控制台的所有输出,将光标回置到第一行

debugger

debugger语句主要用于除错,作用是设置断点。如果有正在运行的除错工具,程序运行到debugger语句时会自动停下。如果没有除错工具,debugger语句不会产生任何结果,JavaScript 引擎自动跳过这一句