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"