JavaScript小窍门总结

小小汇总一下,目前个人遇到的,有很多网上说到的太多的就不记了,那些肯定是对的而且遇到的更多,但哪都能看到基本都熟了。

判定一个变量是否存在,如果存在执行A,不存在执行B

一般使用的方法是

typeof(xxx) != 'undefined'?statementA:statementB;

感觉每次都写 typeof(xxx) != 'undefined' 在前面即不爽又难看,在js里面undefined不是false么于是改为

xxx?statementA:statementB;

可是又报错了:ReferenceError: xxx is not defined,其实可以改成这样.

windown.xxx?statementA:statementB;

说明:如果 if(xxx)可能会报ReferenceError: xxx is not defined的错误时,可以使用 if(window.xxx)

不要循环遍历length

一般对象都有length属性,其实length并不是一个属性,而是一个方法,每次xxx.length都会重新计算,在循环中如果先赋值会省性能

for(var i=0;i<xxx.length;i++){
 statement;
}
//应该改为
for(var i=0,j=xxx.length;i<j;i++){
 statement;
}

Math.random()返回从0到1之间的数,随机取值计算都需要

var tmp = Math.random();
Math.floor(tmp*100); //取0-100 之间的数
var range = max - min +1; //取min - max 之间的数,tmp乘以10000代表min-max可以为 0-9999内,如果要多的加零
return Math.ceil(tmp*10000)%range + min ;

使用 || 给变量赋值

var xxx = false || 0 || undefined || 'hello'; // xxx = hello

量少用new

JavaScript本身就是程序脚本,老给我提面向对象思想,MVC狗屁的都死开,我写代码只考虑两点,一是性能高,二是复用结构好阅读好。

这两点很多时候不能兼顾,自己去考虑平衡点去舍取,虽有偏执,担一般情况下,(轻量级的网站)不纠结于一点点的性能开销。

注意用户体验