js老司机会写各种新手看不懂的代码,很倔很神奇的同事,性能也会更好。当然心思全花在这上面就本末倒置了。。。
下面都是我看过的,使用过的一些“奇技淫巧”(只是我认为,不一定是):

使用void 0代替undefined:

1
2
//三目运算这么写:
foo?true:void 0;

效果有:

  • 防止undefined在非严格模式下被重写;
  • void 0相比undefined可以节省3个字节;
  • 速度快。

除此之外,还有:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//取整
parseInt(a,10); //Before
Math.floor(a); //Before
a>>0; //Before
~~a; //After
a|0; //After
//四舍五入
Math.round(a); //Before
a+.5|0; //After
//内置值
undefined; //Before
void 0; //After, 快
0[0]; //After, 略慢
//内置值
Infinity;
1/0;
//布尔值短写法
true; //Before
!0; //After
//布尔值短写法
false; //Before
!1; //After

生成一个重复数组,长度为m,值为n (只考虑n为string类型的情况).

1
const generateRepeatArr = (m, n) => new Array(m+1).join(n+Symbol).split(Symbol).slice(0,-1);