📝 Javascript Skill


  • ~~

    ~~ 可以把一个数据的数据类型转为数字

    例如:

        ~~'1'           // 1
        ~~2             // 2
        ~~'a'           // 0
        ~~[1, 2, 3]     // 0
        ~~{a: 1, b: 2}  // 0
    

    可以看到~~与普通的Number()包裹不同,它会统一将NaN转为0


  • >>>

    通常配合>>>0使用来转数字

    例如:

        '1'>>>0            // 1
        2>>>0              // 2
        'a'>>>0            // 0
        [1, 2, 3]>>>0      // 0
        {a: 1, b: 2}>>>0   // SyntaxError
    

    同样也是将NaN转为0,不同的是对象直接比较会报错,如果要比较对象,可以先赋值再比较

        let obj = {a: 1, b: 2};
        obj>>>0            // 0
    

  • ~

    会把正整数转为对应负数-1,把负整数转成对应正整数-1, 0则为-1。 通常可以跟indexOf配合起来做判断,简化写法 ( ✨ 更新:其实用es7的Array.prototype.includes更简单) 例如:

        let arr = [1,2,3,4,5];
        if(~arr.indexOf(1)){ // -1 
            // ...
        }
        if(~arr.indexOf(6)){ // 0
            // ...
        }
    

  • **

在ES7中引入了指数运算符**,**具有与Math.pow(..)等效的计算结果。

    2**10 === Math.pow(2,10) // true