在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ NaN 是一個 number 類型, 那么它在 js 內(nèi)部是一個數(shù)值嗎以及怎么表

NaN 是一個 number 類型, 那么它在 js 內(nèi)部是一個數(shù)值嗎以及怎么表示的

NaN 在 JS 類似怎么表示的?

typeof NaN === 'number', NaN 是一個 number 類型,那它在 js 中是如其它數(shù)值一樣是個 64 為浮點數(shù)嗎?

感覺 NaN 和 0 有些類似

對于數(shù)值類型 ~~num 會轉(zhuǎn)化為一個 32 位的整型,如果原值也為一個不大于 2 ** 31 的整型,則會相同

    let num = 0;
    ~num; // -1
    ~~num; // 0
    ~~num === num; // true
    // 再看 NaN
    ~NaN; // -1
    ~~NaN; // 0
    ~~NaN === num

那么 NaN 時候是一個特殊的 0,或者說 0 是有兩種狀態(tài)的?

回答
編輯回答
心夠野

我覺得……別想太多,只是湊巧。

~是按位取反,取反兩次當(dāng)然是本身。

按位取反是這么玩的:

clipboard.png

補碼原碼就不解釋了,基礎(chǔ)知識。

為了你這個問題我特地去翻了ECMAScript 1st Edition (ECMA-262)

我們來看這個飄號~.

clipboard.png

可以看到,里面第三個處理步驟,就是要將值通過ToInt32(),這個當(dāng)然也是有標(biāo)準(zhǔn)實現(xiàn)的:

clipboard.png

這里指出了,在ToInt32的時候,NaN(包括正負(fù)無窮Infinity)統(tǒng)一按0處理。
這就是你這個問題的答案

所以同理也可以得到這個:
clipboard.png

2018年3月3日 18:43