最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript?雙位非運算(~~?操作符)使用場景實例探索

 更新時間:2024年01月23日 08:42:42   作者:南城FE  
本文為大家介紹JavaScript中雙位非運算?~~,?~~?操作符是一個強大且經(jīng)常被忽視的特性,它提供了一種快速、簡潔的方式來處理數(shù)字和執(zhí)行類型轉(zhuǎn)換,通??梢员挥糜跀?shù)學計算和類型轉(zhuǎn)換,我們先了解一下?~~?的基本概念和它的一些應(yīng)用場景

~~ 操作符簡介

在 JavaScript 中,~~ 是雙位非(bitwise NOT)操作符的雙重使用。位非操作符 (~) 將其操作數(shù)的所有位進行反轉(zhuǎn)(即,1 變成 0,0 變成 1)。當你連續(xù)使用兩次(如 ~~),它會再次反轉(zhuǎn)這些位,從而實際上返回原始值。

在給定表達式~foo的情況下,其最終的效果是-(foo + 1)。因此雙位非操作~~foo將導致-(-(foo + 1) + 1)。這只適用于整數(shù),給定所有可能的操作數(shù),與~~等價的真實的表達式可能是下面這樣的,但真實的內(nèi)部計算肯定不是這樣:

typeof foo === 'number' && !isNaN(foo) && foo !== Infinity
    ? foo > 0 ? Math.floor(foo) : Math.ceil(foo) : 0;

下面是一些雙位非運算的例子:

~~null;      // => 0
~~undefined; // => 0
~~0;         // => 0
~~{};        // => 0
~~[];        // => 0
~~(1/0);     // => 0
~~false;     // => 0
~~true;      // => 1
~~1.2543;    // => 1
~~4.9;       // => 4
~~(-2.999);  // => -2

當你正在處理正數(shù),~~ 的功能使其成為 Math.floor 的更好替代方案,雖然它的可讀性不太好,但它速度更快且占用的字符更少。

應(yīng)用場景

  • 將浮點數(shù)轉(zhuǎn)換為整數(shù)

    • ~~ 可以用于快速將浮點數(shù)轉(zhuǎn)換為整數(shù)。這種轉(zhuǎn)換類似于 Math.floor(),但更簡潔且在某些情況下性能更高。
    • 示例:~~4.9 結(jié)果是 4。
  • 處理非數(shù)值

    • 當對非數(shù)值(如字符串)使用 ~~ 時,JavaScript 會首先嘗試將其轉(zhuǎn)換為數(shù)字。如果轉(zhuǎn)換失敗,則結(jié)果為 0。
    • 示例:~~"hello" 結(jié)果是 0。
  • 數(shù)據(jù)清潔和驗證

    • 在處理用戶輸入或不確定的數(shù)據(jù)時,~~ 可以確保你最終得到一個整數(shù),或者在無法轉(zhuǎn)換的情況下得到 0。
  • 性能優(yōu)化

    • 在一些性能敏感的應(yīng)用中,~~ 作為一種快速的整數(shù)轉(zhuǎn)換方法,可以提供比標準方法更快的性能。

結(jié)論

~~ 運算符方法執(zhí)行很快,當你執(zhí)行數(shù)百萬這樣的操作非常適用,速度明顯優(yōu)于其他方法,但是代碼的可讀性比較差。還有一個需要要注意的地方,按位雙非運算符方法僅適用于32位整數(shù),即(2**31)-1 = 2147483647。所以對于任何高于2147483647的數(shù)字,按位運算符(~~)都會給出錯誤的結(jié)果,所以在這種情況下建議使用Math.floor()

以上就是JavaScript 雙位非運算(~~ 操作符)使用場景實例探索的詳細內(nèi)容,更多關(guān)于JavaScript雙位非運算的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

新安县| 遂平县| 横山县| 保靖县| 攀枝花市| 宽城| 甘德县| 石嘴山市| 大石桥市| 绥中县| 兴城市| 丰镇市| 陵川县| 太仆寺旗| 乐清市| 昌邑市| 奉节县| 贺州市| 鱼台县| 东明县| 新民市| 鲜城| 延庆县| 石楼县| 临潭县| 通渭县| 邻水| 洪江市| 于都县| 阳泉市| 密云县| 惠水县| 罗源县| 武城县| 航空| 腾冲县| 视频| 莱州市| 健康| 安远县| 衡水市|