2011-12-07 63 views
3

可能重複:
Using bitwise OR 0 to floor a numberJavascript中的OR運算符(|)與parseInt的運算符相同嗎?

執行按位或兩個表達式,如:

console.log(12.22|0) // output --->12 

哪裏小數走? 它與parseInt函數相同

parseInt(12.22) // output --->12 

它是如何工作的?

+0

非常感謝。我知道 –

+1

我猜想按位OR會導致雙精度12.22在應用按位或操作之前自動轉換爲整數,因爲您無法對浮點執行按位或操作。 12.22 | 1 == 13.投票結束爲http://stackoverflow.com/questions/7487977/using-bitwise-or-0-to-floor-a-number。 – jfriend00

+0

如何關閉我的問題?我是新來的。 –

回答

2

parseInt在解析諸如「12px」之類的字符串時很有用。

例如:

pasrseInt("12px"); // returns 12 

然而,這並沒有使與逐位或任何意義:

"12px" | 0; // returns 0 

執行逐位OR更像是應用Math.floor()多項 - 按位操作可以在Javascript中使用32位整數。

+0

這與應用'Math.floor'不同。它更接近應用'Math.trunc',但速度要快得多,因爲它不是一個可以替換的函數。這是一個無法替換的運營商。它仍然與'Math.trunc'不同,因爲它會爲'NaN |返回不同的值0' vs'Math.trunc(NaN)' – gman