1,使用!!操作符转换布尔值
对于变量使用!!variable做检测,只要变量为:0,null," ",undefined,NaN都返回false,反之返回true。
function Account(cash){
this.cash = cash;
this.hasMoney = !!cash;
}
var account = new Account(100.50);
console.log(account.cash);//100.50
console.log(account.hasMoney);//true
var emptyAccount = new Account(0);
console.log(empty.cash);//0
console.log(empty.hasMoney);//false
只要account.cash的值大于0,account.hasMoney返回值是true
2.使用+将字符串转成数字
只适用于字符串数据,否则将返回NaN,
function toNumber(strNumber){
return +strNumber;
}
console.log(toNumber("1234")); //1234
console.log(toNumber("AEC")); //NaN
这也适用于Date:console.log(+new Date());//1461288164385
3.并条件
if(conected){
login();
}
将上面代码简写使用&&和函数连在一起:conected&&login();
如果一些属性或函数存在于一个对象中,可以做如下检测:
user&&user.login();
4.使用||运算符
function User(name, age){
this.name = name||"Oliver Queen";
this.age = age||27;
}
var userl = new User();
console.log(userl.name);//Oliver Queen
console.log(userl.age);//27
var user2 = new User("Barry Allen",25);
console.log(user2.name);//Barry Allen
console.log(user2.age);// 25
5.在循环中缓存array.length
这个技巧很简单,这个在处理一个很大的数组循环时,对性能影响非常大,基本上,都会这样写:
for(var i =0;i<array.length;i++)
{
console.log(array[i]);
}
如果小型数组,没问题,大数组,这样会在每次迭代的时候重新计算数组大小,这会导致一些延误,为了避免可以将array。length做一个缓存
var length = array.length;
for(var i=0;i<length;i++)
{
consle.log(array[i]);
}
也可以这样:
for(var i=0,length = array.length;i<length;i++)
{
console.log(array[i]);
}