我剛剛發現在ES6中有一個新的數學方法:Math.trunc
。`Math.trunc` vs`| 0` vs`<<0` vs `>> 0` vs`&-1` vs`^ 0`
我已閱讀其在MDN article中的描述,聽起來像使用|0
。
此外,<<0
,>>0
,&-1
,^0
也做類似的事情(感謝@kojiro & @Bergi)。
一些測試後,似乎唯一的區別是:
Math.trunc
回報-0
在區間(-1,-0]
號碼。按位運算符返回0
。Math.trunc
返回NaN
與非數字。按位運算符返回0
。
是否有更多的差異(其中所有)?
n | Math.trunc | Bitwise operators
----------------------------------------
42.84 | 42 | 42
13.37 | 13 | 13
0.123 | 0 | 0
0 | 0 | 0
-0 | -0 | 0
-0.123 | -0 | 0
-42.84 | -42 | -42
NaN | NaN | 0
"foo" | NaN | 0
void(0)| NaN | 0
不要忘了'<< 0', '>> 0','&-1'和'^ 1'。 ;) – kojiro
@kogiro哦,我不知道他們也做同樣的事情,但我猜''0'更常見,因爲它用在asm.js – Oriol
我並不是想暗示他們做的事情完全一樣。他們*不會做同樣的事情,但他們也會做類似的事情,所以如果您將操作進行對比,那麼也值得讓這些東西進入。 – kojiro