分享说明:
1. 我先申明,我只是茫茫WEB前端开发人员中的一名普通的js程序员,我收集的和总结的代码未必就一定是性能最好的,可能会是性能最差的,希望看到这篇博客的朋友能够对我的错误进行批评指正。
2. 随着代码效率的提升,难免可读性降低,因此使用还请权衡。
谢谢!
一、条件判断类(以下的a都默认是boolean类型):
1. 常规代码
if(a) {
b = 'a是true';
} else {
b = 'a是false';
}
2. 三元运算符
b = a ? 'a是true':'a是false';
3. 个人觉得性能最优代码
b = a && 'a是true' || 'a是false';
二、 数组的连接(a和b均为数组)
1. 使用concat方法
a.concat(b)
2. 使用循环push(性能应该最差,不写具体代码了,估计没有人这么干)
3. 使用栈方法push(此方法性能最高,若有兴趣可以测试看看)
Array.prototype.push.apply(a, b);
三、 对于确定类型并且确定值的判断(a和b均是js变量),比如:keydown事件中的keyCode的比较
1. 使用等号==(该表达式会默认对类型进行转换)
a == b
2. 使用全等运算符===(该表达式不会进行类型转换,直接看类型,若不同类型返回false,否则比较值是否相等)
a === b
四、 字符串连接(当一次会进行很多次循环操作的时候)
1. 使用+连接,由于每次都会在连接的时候创建另一个字符串对象,因此性能较低(目前某些浏览器进行了优化,但是对于IE浏览器,性能依旧很低);
var a = '', b = 10000;
while( b-- > 0) {
a += '我是第' + (10000 – b) + '次操作\r\n';
}
2. 在循环中将字符串添加到一个数组中,循环结束后使用数组的join方法,这样就不会在每次字符串连接的过程中创建另一个临时对象,因此性能显著提升。
var a = [], b = 10000;
while( b-- > 0) {
a.push('我是第', 10000-b, '次操作\r\n');
}
五、 取整运算,已知a为数字类型
1. 常规方法
Math.floor(a)
2. 两次取反(该方法必须先确定a为数字类型,否则运行时会报错,不会返回NaN)
~~a
本文链接
在利用浮动进行布局时,不免会遇到一些问题。例如,当一个元素的所有子元素都浮动时,该元素的高度会变为零,这将破坏整体布局或导致该元素的背景不能正常显示。
该问题的解决方法有很多,但这里会列出一个非常优雅的方法,即简易清除工具。这是一段样式规则,其细节如下所示。
.clear-fix:after {content: ".";
display: block;
height: 0;
font-size: 0;
clear: both;
visibility: hidden;
}
.clear-fix {
+height: 1%;
}
本文链接
浏览器内置了很多元素的默认样式,例如超链接的蓝色带下划线的文字样式。h1元素同样具有默认样式,例如外边距,粗字体,大字号等样式。糟糕的是,不同浏览器有不同的默认样式。 为更好的控制元素样式,Eric Meyer提供了一个样式重置工具,来提高设计师的工作效率。这是一张名为reset.css的样式表,其中的样式规则如下。
/* http://meyerweb.com/eric/tools/css/reset/v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
本文链接