js位运算符的应用

x | 0,x >> 0,~~x

这3种运算符都可以取整

1. 取整,正数取地板值Math.foor,负数取天花板值Math.ceil
2. 非数字转为0,null和undefined转换为0

x >>> 0

1. 取整,正数取地板值,负数无用
2. 非数字转为0,null和undefined转换为0

~x

1. -1转为0
2. 值都转换为-(Math.floor(x)+1)

应用

1. if(~arr.indexOf(el))

可以判断包含el,返回-1会转换为0,判断为false,其他判断为true

2. x = ~~a

a若为null和undefined,转换为0,比parseInt方便

3. var len = O.length >>> 0;

length若为null或undefined,转换为0,其他正值取整

4. 使用&,>>,|来完成rgb值和16进制颜色值之间的转换

16进制颜色值转RGB:

function hexToRGB(hex){
    var hex = hex.replace("#","0x"),
        r = hex >> 16,
        g = hex >> 8 & 0xff,
        b = hex & 0xff;
    return "rgb("+r+","+g+","+b+")";
}

RGB转16进制颜色值:

function RGBToHex(rgb){
    var rgbArr = rgb.split(/[^\d]+/),
        color = rgbArr[1]<<16 | rgbArr[2]<<8 | rgbArr[3];
    return "#"+color.toString(16);
}

运行 hexToRGB("#ffffff") 返回 "rgb(255,255,255)"

运行 RGBToHex("rgb(255,255,255)") 返回 "#ffffff"

posted @ 2020-05-10 23:01  全玉  阅读(511)  评论(0编辑  收藏  举报