控制台之console
前言
控制台中的用法有很多,比如常用的console.log(),还有不常用的 console.warn()、 console.error()等,下面对控制台中主要的console方法做一个简单的介绍。
1. console.assert()
这个方法接受至少两个参数,第一个参数是一个布尔值,如果这个布尔值为 true, 那么后面的参数将不会被打印出来; 如果是false,那么后面的参数将依次被打印出来。
console.assert(false, "显示");
2. console.clear()
这个方法可以清空控制台,无参数接受。
3. console.count()
这个方法最多可以接受一个参数,也可以不接受参数。
如果无参数,那么console.count()表示在当前位置被调用的次数,如果接受参数,如console.count("person"), 则会统计 console.count("person") 被调用的次数。
4. console.dir()
这个方法传递的可以是一个对象,可以和 console.log做对比,发现,console.dir() 就像一个目录一样,是一个折叠的三角形列表。
5. console.dirxml()
这个方法同样也是传递一个HTML容器对象, 如 console.dirxml(document.body) ,如果不是一个html容器对象,那么传递一个JavaScript对象也是可以的。
6. console.group() && console.groupEnd()
这个方法可以建立一个分组,当然分组也是可以嵌套的。 以 console.group() 作为开始, 以 console.groupEnd() 作为结束,他们都会被缩进,并且可以被折叠。
console.log("不是分组");
console.log("不是分组");
console.log("不是分组");
console.group("group开始");
console.log("在分组中");
console.log("在分组中");
console.log("在分组中");
console.log("在分组中");
console.groupEnd();
console.log("不是分组");
console.log("不是分组");
console.log("不是分组");
console.log("不是分组");
7. console.groupCollapsed() 和 console.groupEnd()
刚才所讲的 console.group() 所建立的分组默认是折叠的, 而console.groupCollapsed() 默认是折叠的。
所以在调试代码的过程中,利用分组、折叠这个特性,应该可以让我们调试代码更容易一些。
8. console.profile() 和 console.profileEnd()
记录性能。暂时不支持使用。
9. console.table()
可以将数组和对象按照table的方式打印出来,可以接收第二个参数,这个参数表示列数。
10. console.time() 和 console.timeEnd()
需要接受一个字符串作为参数,用来统计执行的时间。
11. console.trace()
进行栈的跟踪。
补充: console.table可以用于显示对象以及属组,这样,我们就可以更好的在控制台中查看。 之前做过一个二维温度场变化的程序,通过微分方程离散化之后就可以进行模拟了,程序如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>温度场数值模拟</title>
</head>
<body>
<script>
// 定义二维数组,存储温度。
let t = [],
tl = [];
// 定义微分方程离散化的相关数据
const Interval = 5, // 时间步长
CoolingTime = 6, // 最长运行时间
n = 4, // 使用n倍步长统计中心点温度变化
xInterval = 1, // δx
yInterval = 1; // δy
const Difu = 0.05, // 扩散系数
T0 = 500, // 初始温度
Tw = 100, // 边界温度
L1 = 8, // 二维界面宽度
L2 = 8, // 二维界面高度
xLen = L1/xInterval + 1, // T矩阵的行数
yLen = L2/yInterval + 1, // T矩阵的列数
M1 = (Difu * Interval) / Math.pow(xInterval, 2), // M1常系数
M2 = (Difu * Interval) / Math.pow(yInterval, 2); // M2常系数
// 稳定性条件判断
let r = 1/(2 * Difu * ((1 / Math.pow(xInterval, 2)) + (1 / Math.pow(yInterval, 2))));
console.log('时间步长:', Interval);
console.log('等式右边:', r);
if (Interval > r) {
console.error('不满足稳定性条件!');
} else {
console.log('%c满足稳定性条件!', 'color: green;font-weight: bold');
}
console.log('');
console.log('');
// 赋值初始温度
for (let i = 0; i < xLen; i++ ) {
t[i] = [];
tl[i] = [];
for (let j = 0; j < yLen; j++) {
t[i][j] = tl[i][j] = T0;
}
}
// 输出初始温度
console.log('%c初始温度: ' , 'color: purple; font-weight: bold');
console.table(t);
console.log(' ');
console.log(' ');
// 判断是否处于边界
function isBorder(x, y) {
return (x == 0 || y == 0 || x == xLen - 1 || y == yLen - 1);
}
// 记录中心点数据
let mid = {};
// 当前时间初始化
let time = 0;
while (time < CoolingTime * 60) {
// 计算最新时刻温度
for (let i = 0; i < xLen; i++ ) {
for (let j = 0; j < yLen; j++) {
// 判断是否处于边界
if (isBorder(i, j)) {
tl[i][j] = Tw;
} else {
// 使用离散化的各单元温度计算公式。
tl[i][j] = M1 * (t[i - 1][j] + t[i + 1][j])
+ M2 * (t[i][j - 1] + t[i][j + 1])
+ (1 - 2 * M1 - 2 * M2) * t[i][j];
tl[i][j] = Number(tl[i][j].toFixed(4));
}
}
}
t = tl;
// 记录中心点数据(使用n倍步长统计)
if (time % (n * Interval) == 0) {
mid[time + 's'] = t[parseInt(xLen/2)][parseInt(yLen/2)];
}
time += Interval;
}
// 获取各个时间段的内部温度场
console.log('%c' + CoolingTime + 'min后的物体内部温度场: ', 'color: green; font-weight: bold');
console.table(t);
console.log(' ');
console.log(' ');
// 获取中心点的各个时间段。
console.log('%c中心点的温度变化', 'color: red; font-weight: bold');
console.table(mid);
</script>
</body>
</html>
通过使用console.table,我们可以看到控制台如下所示:
原文地址:https://www.cnblogs.com/zhuzhenwei918/p/6936898.html