javascript 01 (console)

Console

我们经常会在浏览器中使用console.log来进行调试和参数的输出查看,但是console其实是一个非常丰富的封装,其中还有很多的方法,今天就来介绍一下。
首先,我们先看一下console的代码

console结构

下面就介绍一下,我们会用到的可以提高我们开发效率,调试效率的方法。

1. console.log()

//平时我们使用的时候会这样
console.log("测试内容不要当真");
//或者这样
console.log(1,2,3,4)
//或者这样
console.log({name:1})

上面我们使用的格式为console.log(object),console.log(object, otherObject, string)
除了这些基础用法还有比较好玩的用法
console.log(msg, values),这个格式的用法有点像C++的printf,C#的Console.Write()等
那么我们来看看怎么使用

//首先我们使用了3种占位符
console.log("我今天吃了%o,你吃了%d顿,你叫%s.", "Skittles", 22,"Kalan");

//%o的复杂传值
console.log("abc %o",{name:1})
效果

效果2

我们看一下效果
可以看到%o这个是对象占位符,%s这个是字符串占位符,%d这个是数字占位符

下面我们讲解一个更好玩的占位符%c,先上代码

console.log(
    "我爱你 %c路西" one day,
    "color: Red; background-color: orange; padding: 2px 5px; border-radius: 2px"
);

图片.png

看到这里,应该明白,这个占位符当你使用之后,后面所有的文字都将根据此CSS渲染%o除外

2. console.dir()

//直接上例子
console.dir(document.getElementsByClassName("full")[0])
console.log(document.getElementsByClassName("full")[0])
结果

图片.png

我们看到结果console.log直接输出的html,而console.dir输出的是DOM结构树对象

3. console.warn()

图片.png

这个函数直接会输出一个警告框,可以定位到输出位置

4. console.table()

这个函数能更好的显示列表型数据,我们用console.log显示对比一下

console.table([1,2,3],[2,3,4])
console.table({name:1,age:2},{name:11,age:22},{name:11,age:22})
对比图
图片.png

5. console.assert()

图片.png
图片.png

可以传递2个参数:如果为false会输出Assertion failed和第二个参数(如上图所示)

6.console.count

count只是作为一个计数器,或者作为一个命名计数器,可以统计代码被执行的次数。

for (let i = 0; i < 10000; i++) {
    if (i % 2) {
        console.count("odds");
    }
    if (!(i % 5)) {
        console.count("multiplesOfFive");
    }
    if (isPrime(i)) {
        console.count("prime");
    }
}

7.console.trace()

trace 可以调试模块之间的调用

export default class CupcakeService {

  constructor(dataLib) {
    this.dataLib = dataLib;
    if(typeof dataLib !== 'object') {
      console.log(dataLib);
      console.trace();
    }
  }
  ...
}

这里使用 console.log()仅告诉我们传递数据dataLib是什么 ,而没有具体的传递的路径。不过,console.trace()会非常清楚地告诉我们问题出在 Dashboard.js,我们可以看到是 new CupcakeService(false)导致错误。

8.console.time()

console.time() 是一个用于跟踪操作时间的专用函数,它是跟踪 JavaScript 执行时间的好方法。

function slowFunction(number) {
    var functionTimerStart = new Date().getTime();
    // something slow or complex with the numbers.
    // Factorials, or whatever.
    var functionTime = new Date().getTime() - functionTimerStart;
    console.log(`Function time: ${functionTime}`);
}
var start = new Date().getTime();

for (i = 0; i < 100000; ++i) {
    slowFunction(i);
}

var time = new Date().getTime() - start;
console.log(`Execution time: ${time}`);

这是一种老派的做法,我们使用 console.time()来简化以上代码。

const slowFunction = number => {
    console.time("slowFunction");
    // something slow or complex with the numbers.
    // Factorials, or whatever.
    console.timeEnd("slowFunction");
};
console.time();

for (i = 0; i < 100000; ++i) {
    slowFunction(i);
}
console.timeEnd();

9.console.group()

// this is the global scope
let number = 1;
console.group("OutsideLoop");
console.log(number);
console.group("Loop");
for (let i = 0; i < 5; i++) {
    number = i + number;
    console.log(number);
}
console.groupEnd();
console.log(number);
console.groupEnd();
console.log("All done now");

输出如下:

image
class MyClass {
    constructor(dataAccess) {
        console.group("Constructor");
        console.log("Constructor executed");
        console.assert(
            typeof dataAccess === "object",
            "Potentially incorrect dataAccess object"
        );
        this.initializeEvents();
        console.groupEnd();
    }
    initializeEvents() {
        console.group("events");
        console.log("Initialising events");
        console.groupEnd();
    }
}
let myClass = new MyClass(false);
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容