这个太多了吧,毕竟是JavaScript啊。
比如进行判断赋值可以这样:
var status = file && ‘success’ || ‘fail’;
调用匿名函数可以这样:
~function(){console。log(‘done’)}();
还有能够有效判断变量类型的办法:
function typefor(o) {
return Object。prototype。toString。call(o)
。match(/(\w+)\]$/)[1]
。toLowerCase();
}
如果你在乎效率,还有很多能提高运行速度的方法:
Math。floor(n)可以用~~n优化(快4倍左右);
用(new Function(strCode))()比eval快50倍;
对于字符串连接,用foo。concat(bar)比foo = foo + bar或foo += bar要快5倍;
还有多用for少用while;
尽量重复使用现有的对象,少创建新对象。
还有很多,应该多从实践中积累,否则学会了也不知道怎么用。
这里记录一下以前学习各种书籍和文章里边出现的JS的小技巧,分享给大家,也供自己查阅,同时感谢那些发现创造和分享这些技巧的前辈和大牛们。
1、遍历一个obj的属性到数组
var a=[];
for(a[a。length] in obj);
return a;
乍一看可能比较蒙,不过仔细分析还是不难理解的。常见用法是for(var key in obj),这里key初始也是undefined的,a[a。length]整体也是undefined,所以二者其实是等价的。在for循环中,obj的属性会依次赋值给key,同样,也依次赋值给a[a。length],这里length一直在变,就巧妙地挨个赋值给数组的每一个元素了。
2、重复字符串(如abc=>abcabc)
function repeat(target,n){
return (new Array(n+1)。join(target));
}
改良版本:
function repeat(target,n){
return Array。prototype。join。call(
{length:n+1},target);
//之所以要创建带length属性的对象,是因为调用数组原型方法时,必须是一个类数组对象,而类数组对象的条件就是length为非负整数
}