Consoleオブジェクトのメソッドいろいろ
どうもoreoです。
デバック時に大活躍するconsole
オブジェクトについて記載します。log()
ばかり使っていますが、ケースバイケースでlog()
よりも使いやすいメソッドがありますね。
1 メソッドいろいろ
console.log()
1-1 文字列、数値、boolean、配列、オブジェクトなど、引数に渡した値をデバックコンソールに出力します。
const target = {
name: "太郎",
family: {
father: "よしお",
mother: "のぶ子",
sister: "花子",
dog: "ポチ",
},
address: "東京都",
age: 18,
};
console.log("hoge");
console.log(111);
console.log(null);
console.log(target);
オブジェクトを出力する際、オブジェクトをJSON.parse(JSON.stringify())
してあげないと、オブジェクトの値が変更された際、デバックコンソール上の全ての値も変更されてしまう場合があるので注意です。
console.log("変更前", target);
target.family.father = "次郎";
console.log("変更後", target);
変更前は、target.family.father = よしお
のはずが、次郎
に更新される。
JSON.parse(JSON.stringify())
を使うと、変更前もtarget.family.father = よしお
として出力されます。
console.log("変更前", JSON.parse(JSON.stringify(target)));
target.family.father = "次郎";
console.log("変更後", JSON.parse(JSON.stringify(target)));
console.dir()
1-2 console.dir()
はDOM要素をJSON形式で表示します。一方で、console.log()
ではDOM要素をhtml形式で表示されます。
console.log("====console.log====");
console.log(document.body);
console.log("====console.dir====");
console.dir(document.body);
What's the difference between console.dir and console.log?
オブジェクトの出力形式も違います。
console.log("====console.log====");
console.log(target);
console.log("====console.dir====");
console.dir(target);
console.table()
1-3 配列またはオブジェクトを渡すとテーブル形式でデバックコンソールに出力します。
console.table(target);
console.trace()
1-4 console.trace()
でスタックトレースを確認できます。
function hoge() {
function fuga() {
console.trace();
}
fuga();
}
hoge();
ファイル名を踏むと、コード上の処理を確認できます。
console.warn()
1-5 引数に渡した値を警告メッセージとしてデバックコンソールに出力します。
console.warn("warningです");
console.warn(1111);
console.warn(target);
console.error()
1-6 引数に渡した値をエラーメッセージとしてデバックコンソールに出力します。
console.error("エラーです");
console.error(1111);
console.error(target);
console.assert()
1-7 第一引数に判定式を渡し、判定式がfalse
の場合、第二引数以降の値をエラーメッセージとしてデバックコンソールに出力します。
console.assert(false, "第一引数がfalseだとエラー文出る");
console.assert(true, "第一引数がtrueだとエラー文出ない");
console.clear()
1-8 コンソールの値を削除し、リセットしてくれます。
console.log("clear前");
console.clear();
console.log("clear後");
console.count()
、console.countReset()
1-9 console.count()
はこのメソッドを呼び出した回数を記録します。文字列を引数として渡すとカウンターにラベルとつけて記録します(ラベルをつけないとdefault
ラベルとなります)。
console.countReset()
でカウンターをリセットでき、リセットしたいラベル名を渡すとそのカウンターをリセットしてくれます。
//defaultのラベル
console.count();
console.count();
//"年齢"ラベルをつける
console.count("年齢");
console.count("年齢");
console.count("年齢");
//"年齢"ラベルのカウントをリセット
console.countReset("年齢");
console.count("年齢");
console.group()
、console.groupCollapsed()
、console.groupEnd()
1-10 console.group()
を使うとデバックコンソールのログをグループ化できます。console.groupEnd()
でグループ化を終了できます。
console.log("====グループ化有====");
console.group();
console.log("hoge");
console.log("fuga");
console.groupEnd();
console.log("====グループ化無====");
console.log("hoge");
console.log("fuga");
グループにはラベルを付与することもできます。
console.group("グループ1");
console.log("hoge");
console.log("fuga");
console.groupEnd("グループ1");
console.groupCollapsed()
を使うと、折りたたみ状態でグループ化できます。こちらも、console.groupEnd()
でグループ化を終了できます。
console.groupCollapsed("グループ1");
console.log("hoge");
console.log("fuga");
console.groupCollapsed("グループ1");
折りたたみ状態
開くとグループ化が確認できます。
console.time()
、console.timeEnd()
、console.timeLog()
1-11 console.time()
でタイマーを起動できます。引数にはラベルをつけることができ、console.timeEnd()
でタイマーを終了します。
console.time("タイマー1");
console.log("hoge");
console.log("fuga");
console.timeEnd("タイマー1");
console.timeLog()
を使うと起動中のタイマーの現在値を確認できます。
console.time("タイマー1");
console.log("hoge");
console.timeLog("タイマー1");
console.log("fuga");
console.timeEnd("タイマー1");
2 最後に
色々ありますね。console.log()
以外ほとんで使っていないので、他のメソッドも活用したいです!
3 参考
Discussion