功能 省字节的字法 不省字节的写法 说明
变量赋初值 a=a||b; if(!a) { a = b; }
变量赋初值 b=a||0; if(a) { b = a; } else { b = 0; }
取整 ~~a 或者 a|0 parseInt(a, 10) 或 Math.floor(a) 或 a>>0
运算后取整 a+b|0 parseInt(a+b,10) 或 Math.floor(a+b) 或 (a+b)>>0 或 ~~(a+b)
四舍五入 a+.5|0 Math.round(a)
除2并取整 a>>1 Math.floor(a/2)
除4并取整 a>>2 Math.floor(a/4) 其它2的整数次方类推
取时间戳 +new Date (new Date()).getTime()
转布尔型 !!a Boolean(a)
转数值型 +a Number(a)
undefined void 0 或 0[0] undefined void 0快速,被频繁调用的方法使用void 0来定义undefined
Infinity 1/0 Infinity
布尔值短写法 !0 true
布尔值短写法 !1 false
定义变量 function(a,b,c){…} function(){var a,b,c;…}
定义变量 function(a,b){b=1;…} function(a){var b=1;…}
测试方法参数个数 1 in arguments arguments.length>1
setInterval和setTimeout setInterval(‘console.log(“z”)’,100); setInterval(function(){console.log(“z”)},100);
setInterval和setTimeout setInterval(‘console.log(“z”)’); setInterval(‘console.log(“z”)’,1);
表达式可以做方法参数 if(a=this.localStorage){…} a=this.localStorage;if(a){…}
表达式可以做方法参数 (b.pop(a=b.pop())+c) ((a=b.pop(),b.pop())+c)
表达式可以做方法参数 x(a=b,1) a=b; x(a,1);
交换变量的值 a=[b,b=a][0]; c = a; a = b; b = c;
用for代替while for(i=10;i—;){…} i=10; while(i—) {…}
常用for的简写 for(var i=x.length;i—;){ } for(var i=0; i<x.length;i++){ }
数字简写 2e6 2*Math.pow(10,6) 或 2000000
数值比较 if(a^123){ } if(a != 123) { }
随机数 new Date % 100 (Math.random() * 100)|0 较小的随机数,不密集使用时,用时间戳省字节
字符串有link方法生成a标签 html=text.link(url); html=”“+text+”“;
指定长度重复字符串 a=Array(33).join(0); for(a=””,i=32;i—;)a+=0;
判断类型 if(x.call){ } if(typeof x===’function’){ }
判断类型 if(x.big){ } if(typeof x===’string’){ }
判断类型 if(x.toFixed){ } if(typeof x===’number’){ }
判断类型 if(x.pop){ } if($.isArray(x)){ }
数组转字串会自带逗号 “rgb(“+[x,y,z]+”)” “rgb(“+x+”,”+y+”,”+z+”)”
判断数组长度 if(array[1]){ } if(array.length>1){ }
省略new r=RegExp(“.”,g); r=new RegExp(“.”,g);
省略new l=Function(“x”,”console.log(x)”); l=new Function(“x”,”console.log(x)”);
立即执行函数 !function(){…}() (function(){…})() 比用括号省一个字节,混淆后的代码都会转成这种写法
省略的getElementById a.innerHTML = “foo”; document.getElementById(‘a’).innerHTML = “foo”; a没有被使用过的话

重复字串,在新浏览器里可以写成 a=”0”.repeat(32); //ES6的方法
在立即执行的顶层闭包中传入void 0目的是为了传入undefined值,这样可以避免代码被Hack。undefined不是保留字,可以被重新赋值