天涯海角异孤星
前端代码高亮插件 highlight.js,默认是不带行号显示功能的。如果要显示行号,我们得自己实现,或是使用第三方插件。下面就来介绍几种实现方式,并分析优缺点。
1、第一种,使用 <li></li> 标签实现行号
2、第二种,使用 highlightjs-line-numbers.js 插件显示行号
3、第三种,我自己的实现方式
逗号操作符 对它的每个操作数求值(从左到右),并返回最后一个操作数的值。
示例代码:
var x = 1;
x = (x++, x);
console.log(x);
// 输出: 2
x = (2, 3);
console.log(x);
// 输出: 3
另一种用法:
var obj = {
fun: function () {
console.log(this === window, this === obj);
}
};
obj.fun();
// 输出: false true
(0, obj.fun)();
// 输出: true false
var test = obj.fun;
test();
// 输出: true false
上面的代码中,(0, obj.fun)();
等同于var test = obj.fun; test();
,前者可以少引入一个临时变量。
参考资料:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comma_Operator
最近在优化后台数据导出功能,把原先后台生成 Excel 的功能(PhpExcel太吃内存),改用 ajax 加载每页数据然后前端 JS 生成 Excel。
找到一个前端生成 Excel 的类库 SheetJS:https://github.com/SheetJS/js-xlsx,以及一篇使用介绍的博文:https://www.cnblogs.com/liuxianan/p/js-excel.html
在导出日期时间的数据列时,想当然的使用了 Date 类型,然后设置显示格式为 yyyy-mm-dd hh:mm:ss
。可是最终结果却显示有偏差,莫名比原来的值多了43秒。
es5常规的写法:
var name = 'kobe';
var age = 39;
var obj = {
name: name,
age: age,
getName: function () {
return this.name;
}
};
console.log(obj);
console.log(obj.getName());
es6简化对象的写法:
同名的属性可以省略,函数可以省略关键字function
/* 简化对象写法 */
var name = 'kobe';
var age = 39;
var obj={
name, //同名的属性可以省略
age,
getName() { //函数可以省略关键字function
return this.name;
}
};
console.log(obj);
console.log(obj.getName());