| 0和~~之间有什么区别?

时间:2015-01-26 22:26:45

标签: javascript

想象一下两个舍入函数

function round1 (number) {
    return ~~number;
}
function round2 (number) {
    return number|0;
}

它们之间有什么实际区别?我正在寻找深入的解释。

2 个答案:

答案 0 :(得分:0)

两个操作都是按位操作。

~是按位不(也称为按位反转)

|是按位或

javascript规范声明在执行按位操作之前应将任何Number转换为Int32(请参阅:http://ecma262-5.com/ELS5_HTML.htm#Section_11.10

规范中的具体行:

  

5)让lnum成为ToInt32(lval)。

     

6)让rnum为ToInt32(rval)。

答案 1 :(得分:0)

~ is "not" (binary/bitwise)  ~3(011) => (100)4

| is  "or" (binary/bitwise) 0(000) | 3(011) => 3 

〜(not)将切换其上的位变为关闭位置和关闭它的位置

| (或)将给出逻辑或像1 OR 0之类的位给出1

在您的示例中确保号码为3

此处~~number对应not(not(011)) => not(100) => 011 i.e 3

此处number|0对应011 or 000 => 011 ie 3