溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JS位運(yùn)算符的使用方法有哪些

發(fā)布時(shí)間:2022-03-17 13:37:34 來源:億速云 閱讀:248 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“JS位運(yùn)算符的使用方法有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“JS位運(yùn)算符的使用方法有哪些”吧!

    1. 使用左移運(yùn)算符 << 迅速得出2的次方

    	1 << 2  // 4, 即 2的2次方
    	1 << 10 // 1024, 即 2的10次方
    	
    	// 但是要注意使用場景
    	a = 2e9;   // 2000000000
    	a << 1;    // -294967296

    2. 使用 ^ 切換變量 0 或 1

    	// --- before ---
        // if 判斷
        if (toggle) {
            toggle = 0;
        } else {
            toggle = 1;
        }
        // 三目運(yùn)算符
        togle = toggle ? 0 : 1;
        
        // --- after ---
        toggle ^= 1;

    3. 使用 & 判斷奇偶性

    	console.log(7 & 1);    // 1
        console.log(8 & 1) ;   // 0

    4. 使用 !! 將數(shù)字轉(zhuǎn)為布爾值

    所有非0的值都是true,包括負(fù)數(shù)、浮點(diǎn)數(shù):

    	console.log(!!7);       // true
        console.log(!!0);       // false
        console.log(!!-1);      // true
        console.log(!!0.71);    // true

    5. 使用~、>>、<<、>>>、|來取整

    相當(dāng)于使用了 Math.floor()

    	console.log(~~11.71)     // 11
        console.log(11.71 >> 0)  // 11
        console.log(11.71 << 0)  // 11
        console.log(11.71 | 0)   // 11
        console.log(11.71 >>> 0) // 11

    注意 >>> 不可對負(fù)數(shù)取整

    6. 使用^來完成值交換

    在 ES6 的解構(gòu)賦值出來之前,用這種方式會(huì)更快(但必須是整數(shù)):

    	// --- before ---
        let temp = a; a = b; b = temp; // 傳統(tǒng),但需要借助臨時(shí)變量
        b = [a, a = b][0] // 借助數(shù)組
        
        // --- after --- 只能用于整數(shù)
        let a = 7
        let b = 1
        a ^= b
        b ^= a
        a ^= b
        console.log(a)   // 1
        console.log(b)   // 7
        
        [a, b] = [b, a]; // ES6,解構(gòu)賦值

    7. 使用^判斷符號是否相同

    只能應(yīng)用與整數(shù)

    	(a ^ b) >= 0; //  true 相同; false 不相同

    8. 使用^來檢查數(shù)字是否不相等

    	// --- before ---
        if (a !== 1171) {...};
        
        // --- after ---
        if (a ^ 1171) {...};

    9. n & (n - 1),如果為 0,說明 n 是 2 的整數(shù)冪

    JS位運(yùn)算符的使用方法有哪些

    10. 使用 A + 0.5 | 0 來替代 Math.round()

    JS位運(yùn)算符的使用方法有哪些

    String

    1. 使用toString(16)取隨機(jī)字符串

    	Math.random().toString(16).substring(2, 15);

    .substring() 的第二個(gè)參數(shù)控制取多少位 (最多可取13位)

    JS位運(yùn)算符的使用方法有哪些

    2. 使用 split(0)

    使用數(shù)字來做為 split 的分隔條件可以節(jié)省2字節(jié)(不實(shí)用)

    	// --- before ---
        "alpha,bravo,charlie".split(",");
        
        // --- after ---
        "alpha0bravo0charlie".split(0);

    3. 使用.link() 創(chuàng)建鏈接

    一個(gè)鮮為人知的方法,可以快速創(chuàng)建 a 標(biāo)簽

    	// --- before ---
        let b = `<a herf="www.google.com">google</a>`;
        
        // --- after ---
        let b =  google .link( www.google.com );

    4. 使用 Array 來重復(fù)字符

        // --- before ---
        for (let a = "", i = 7; i--;) a+= 0;
        
        // --- after ---
        let b = Array(7).join(0); // "0000000"let c = Array(7).join( La ) // "LaLaLaLaLaLa"
        
        // ES6
        let d = "0".repeat(7); // "0000000"

    其他一些花里胡哨的操作

    1. 使用當(dāng)前時(shí)間創(chuàng)建一個(gè)隨機(jī)數(shù)

        // --- before ---
        let b = 0 | Math.random() * 100
        
        // --- after ---
        let a;
        a = new Date % 100; // 兩位隨機(jī)數(shù)
        a = new Date % 1000; // 三位隨機(jī)數(shù)
        a = new Date % 10000; // 四位隨機(jī)數(shù)...依次類推
        // 不要在快速循環(huán)中使用,因?yàn)楹撩肟赡軟]有變化;

    2. 一些可以替代 undefined 的操作

    JS位運(yùn)算符的使用方法有哪些

    3. 使用 Array.length = 0 來清空數(shù)組

    4. 使用 Array.slice(0) 實(shí)現(xiàn)數(shù)組淺拷貝

    5. 使用 !+“1” 快速判斷 IE8 以下的瀏覽器

    JS位運(yùn)算符的使用方法有哪些

    6. for 循環(huán)條件的簡寫

        // --- before ---
        for(let i = 0; i < arr.length; i++) {...}
        
        // --- after ---
        for(let i = arr.length; i--;) {...} // 注意 i-- 后面的分號別漏了

    到此,相信大家對“JS位運(yùn)算符的使用方法有哪些”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    js
    AI