想象一下两个舍入函数
function round1 (number) {
return ~~number;
}
function round2 (number) {
return number|0;
}
它们之间有什么实际区别?我正在寻找深入的解释。
答案 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