js代码中的奇技淫巧
js老司机会写各种新手看不懂的代码,很倔很神奇的同事,性能也会更好。当然心思全花在这上面就本末倒置了。。。
下面都是我看过的,使用过的一些“奇技淫巧”(只是我认为,不一定是):
使用void 0代替undefined:12//三目运算这么写:foo?true:void 0;
效果有:
- 防止undefined在非严格模式下被重写;
- void 0相比undefined可以节省3个字节;
- 速度快。
除此之外,还有:123456789101112131415161718192021222324252627//取整parseInt(a,10); //BeforeMath.floor(a); //Beforea>>0; //Before~~a; //Aftera|0; //After//四舍五入Math.round(a); //Beforea+.5|0; //After//内置值undefined; //Beforevoid 0; //After, 快0[0]; //After, 略慢//内置值Infinity;1/0;//布尔值短写法true; //Before!0; //After//布尔值短写法false; //Before!1; //After
生成一个重复数组,长度为m,值为n (只考虑n为string类型的情况).1const generateRepeatArr = (m, n) => new Array(m+1).join(n+Symbol).split(Symbol).slice(0,-1);