JavaScript

console オブジェクト

 編集:2022.08.26 by T.A.

ブラウザーのデバッグ コンソール(例えば Firefox のウェブ コンソール)へのアクセスを提供します。このオブジェクトの詳細な動作はブラウザーによって異なりますが、一般的に共通の機能セットが提供されています。

console オブジェクトには任意のグローバル オブジェクトからアクセスできます。閲覧スコープの Window や、特定の種類のワーカーを表す WorkerGlobalScope の console プロパティを通してアクセスできます。これは Window.console として公開されていますが、単に console として参照できます。

注: この機能は 内で利用可能です

メソッド
console.assert(assertion, obj1[, obj2[, [, objN]]])
console.assert(assertion, msg[, subst1[, [, substN]]])
第 1 引数が false なら、コンソールへ、指定オブジェクトまたは指定メッセージをエラーとして出力します。指定メッセージは値をはめ込むことが可能です
console.clear()
コンソールの表示状態をクリアします。
console.count([label])
コンソール用の、指定ラベルのカウンターをカウントし、それを表示させます。
console.countReset([label])
console.count() で使われた指定ラベルのカウンターをリセットします。
console.debug(obj1[, obj2[, [, objN]]])
console.debug(msg[, subst1[, [, substN]]])
指定の複数のオブジェクトまたは指定メッセージをウェブ コンソールに出力します。指定メッセージは値のはめ込みが可能です
console.dir(object)
指定オブジェクトをコンソールに表示します。表示物を展開すると、詳細が表示されます。
console.dirxml(object)
指定オブジェクトの詳細をウェブ コンソールに表示します。指定オブジェクトは XML/HTML 要素を意識したもののようです。
console.error(obj1[, obj2[, [, objN]]])
console.error(msg[, subst1[, [, substN]]])
指定オブジェクトまたは指定メッセージをウェブ コンソールにエラーとして出力します。指定メッセージは値のはめ込みが可能です。
console.exception() 非標準 非推奨廃止
error() の別名です。
console.group([label])
ウェブ コンソールのログに、新たなインライン グループを作成します。以降のすべての出力を 1 段階字下げされます。

console.groupEnd() でグループは閉じられ、字下げが戻されます。

console.groupCollapsed([label])
ウェブ コンソールに新たなインライン グループを作成します。表示は 1 段字下げされます。

console.group() とは異なり、グループが折りたたまれた状態で作られます。それを開くには手動で展開ボタンを操作する必要があります。

そのグループを戻すには、console.groupEnd() を呼び出します。

console.groupEnd([label])
現在のインライン グループから抜けます。
console.info(obj1[, obj2[, [, objN]]])
console.info(msg[, subst1[, [, substN]]])
ウェブ コンソールに、指定オブジェクトまたは指定メッセージを出力します。指定メッセージには値を組み込むことができます。
console.log(obj1[, obj2[, [, objN]]])
console.log(msg[, subst1[, [, substN]]])
ウェブ コンソールに、指定オブジェクトまたは指定メッセージを出力します。指定メッセージには値を組み込むことができます。
console.profile([profileName]) 非標準
ブラウザー内蔵のプロファイラー(例えば )を開始します。プロファイルの名称を指定することができます。
console.profileEnd([profileName]) 非標準
プロファイラーを停止します。結果のプロファイルは、ブラウザーのパフォーマンス ツール(例えば )で確認できます。
console.table(data[, columns])
指定データ(オブジェクト等)を表形式で表示します。表示内容の指定も可能です。
console.time([label])
処理時間を計るタイマーを起動します。タイマーに識別の名前を付けることが可能です。
console.timeEnd([label])
console.time() の呼び出しで開始したタイマーを停止します。
console.timeLog([label])
以前に console.time() で呼び出して開始したタイマーの現在の値をコンソールに記録します。
console.timeStamp() 非標準
ブラウザーの ツールにマーカーを追加します。
console.trace([obj1[, obj2[, [, objN]]]])
console.trace([msg[, subst1[, [, substN]]]])
ウェブ コンソールにスタック トレースを出力します。そのとき、指定オブジェクトまたは指定メッセージを表示でき、指定メッセージでは値をはめ込むことが可能です。
console.warn(obj1[, obj2[, [, objN]]])
console.warn(msg[, subst1[, [, substN]]])
ウェブ コンソールに、指定オブジェクトまたは指定メッセージを警告として出力します。指定メッセージでは値をはめ込むことが可能です。

ブラウザーでF12を押すとコンソール画面が表示され、そこに表示をモニタリングできます。

コンソールへのテキストの出力
コンソールでもっとも頻繁に使用される機能は、テキストやその他のデータをログ出力することです。生成することができる出力のカテゴリは 4 つあり、console.log()、console.info()、console.warn()、console.error() の各メソッドを使用します。これらメソッドの出力結果はログ上でそれぞれ異なるスタイルがつけられ、また関心がある種類の出力だけを参照するためにブラウザーが提供するフィルタ機能を使用することもできます。

各出力メソッドを使用する方法は 2 つあります。複数の文字列表現を 1 つの文字列に連結してコンソールに出力する形でオブジェクトのリストを渡す方法と、オブジェクトのリストに続けてそれらを置き換える任意の個数の置換文字列を渡す方法です。

単一のオブジェクトの出力

もっとも簡単にログを記録する方法は、単一のオブジェクトを出力することです。

var someObject = { str: "Some text", id: 5 };
console.log(someObject);

出力結果: コンソールにて

 ⯈{str: 'Some text', id: 5}

文字列置換の使用

文字列を取る console オブジェクトのメソッドの一つ(log() など)に文字列を渡すと、以下の置換文字列を使用することができます。

%o または %O
JavaScript オブジェクトを出力します。オブジェクト名をクリックすると、調査ツールで詳細情報を表示します。
%d または %i
整数値を出力します。数値の書式設定をサポートしています。例えば console.log("Foo %.2d", 1.1) は、先頭に 0 を補った有効数字 2 桁の数値として「Foo 01」のように出力します。
%s
文字列を出力します。
%f
浮動小数点数値を出力します。数値の書式設定に対応しています。例えば console.log("Foo %.2f", 1.1) は、小数部分が 2 桁の数値として出力し、「Foo 1.10」となります。

Note: 精度の書式は 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 ディレクティブを使用すると、コンソールの出力に CSS スタイルを適用することができます。

console.log("This is %cMy stylish message", "color: yellow; font-style: italic; background-color: blue;padding: 2px");

ディレクティブの前のテキストは影響を受けませんが、ディレクティブの後ろのテキストは引数の CSS 宣言を使用して装飾されます。

%c は複数回使用することができます。

console.log("Multiple styles: %cred %corange", "color: red", "color: orange", "Additional unformatted message");

%c で利用できるプロパティは次の通りです。 (少なくとも、 Firefox では — 他のブラウザーでは異なる可能性があります):

Note: コンソール メッセージは、既定ではインライン要素と同様に動作します。padding、margin などの効果を得たい場合は、例えば display: inline-block のように設定してください。

コンソールでのグループの使用

関連するデータを視覚的に結合することによりコンソール出力をまとめるのに役立つ、入れ子になったグループを使用することができます。新たな入れ子のブロックを作成するには、console.group() を呼び出してください。console.groupCollapsed() メソッドは似ていますが、こちらは折りたたまれた状態の新たなブロックを作成し、中身を読むには展開ボタンを操作してブロックを開く必要があります。

現在のグループを抜けるには、console.groupEnd() を呼び出します。

例えば、以下のコードを実行します。

//コンソールにて
console.log("This is the outer level");
console.group("First group");
console.log("In the first group");
console.group("Second group");
console.log("In the second group");
console.warn("Still in the second group");
console.groupEnd();
console.log("Back to the first group");
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");

ユーザーがアラートボックスを解除するのにかかった時間を記録し、その時間をコンソールに記録し、ユーザーが 2 回目のアラートを解除するのを待ってから、終了時間をコンソールに記録します。

タイマーの名前は、タイマーの開始時と停止時の両方で表示されることに注意してください。

Note: タイマーをネットワーク通信の時間の計測に用いる場合、タイマーはトランザクション全体の所要時間を報告しますが、ネットワーク パネルに表示される時間はヘッダーの処理にかかった時間だけを表すことに注意してください。 レスポンス本文の記録を有効にしている場合は、レスポンス ヘッダーとレスポンス本文それぞれに表示される所要時間の合計が、コンソールに出力されている時間に一致します。

スタック トレース

console オブジェクトはスタック トレースの出力にも対応しています。これは console.trace() を呼び出した場所へ至るための呼び出し経路を表示するものです。

//コンソールにて
function foo() {
  function bar() {
    console.trace();
  }
  bar();
}

foo();

コンソールへの出力内容は以下のようになります:


テスト