JavaScript 精简技巧


JavaScript 精简技巧

快速浮点数转整数

  • 将浮点数转换为整数,可以使用Math.floor()、Math.ceil()或Math.round()。但是还有一种更快的方法可以使用|(位或运算符)将浮点数截断为整数。
    1
    console.log(23.2 | 0); // Result: 23

JavaScript 浮点数陷阱及解法

  • 数据展示类 如:1.4000000000000001 取整
    1
    2
    3
    4
    5
    6
    parseFloat(1.4000000000000001.toPrecision(12)) === 1.4  // true
    <!-- 简单封装 -->
    function strip(num, precision = 12) {
    return +parseFloat(num.toPrecision(precision));
    }
    <!-- 为什么选择 12 做为默认精度?这是一个经验的选择,一般选12就能解决掉大部分0001和0009问题,而且大部分情况下也够用了,如果你需要更精确可以调高 -->

数据运算类

  • 对于运算类操作,如 +-*/,就不能使用 toPrecision 了。正确的做法是把小数转成整数后再运算
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /**
    * 精确加法
    */
    function add(num1, num2) {
    const num1Digits = (num1.toString().split('.')[1] || '').length;
    const num2Digits = (num2.toString().split('.')[1] || '').length;
    const baseNum = Math.pow(10, Math.max(num1Digits, num2Digits));
    return (num1 * baseNum + num2 * baseNum) / baseNum;
    }
    add(0.1, 0.2); // 0.3

Switch 简记法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 长
switch (data) {
case 1:
test1();
break;

case 2:
test2();
break;

case 3:
test();
break;
// And so on...
}

// 短
const data = {
1: test1,
2: test2,
3: test
};

data[something] && data[something]();