欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS中位運(yùn)算符的一些妙用

 更新時(shí)間:2022年03月17日 11:09:22   作者:sir.山  
大多數(shù)語(yǔ)言都提供了按位運(yùn)算符,恰當(dāng)?shù)氖褂冒次贿\(yùn)算符有時(shí)候會(huì)取得的很好的效果,下面這篇文章主要給大家介紹了關(guān)于JS中位運(yùn)算符的一些妙用,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言:

Javascript 完全套用了 Java 的位運(yùn)算符,包括按位與&、按位或|、按位異或^、按位非~、左移<<、帶符號(hào)的右移>>和用0補(bǔ)足的右移>>>。這套運(yùn)算符針對(duì)的是整數(shù),所以對(duì) JavaScript 完全無(wú)用,因?yàn)?JavaScript 內(nèi)部,所有數(shù)字都保存為雙精度浮點(diǎn)數(shù)。如果使用它們的話,JavaScript 不得不將運(yùn)算數(shù)先轉(zhuǎn)為整數(shù),然后再進(jìn)行運(yùn)算,這樣就降低了速度。而且"按位與運(yùn)算符"&同"邏輯與運(yùn)算符"&&,很容易混淆。

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

	1 << 2  // 4, 即 2的2次方
	1 << 10 // 1024, 即 2的10次方
	
	// 但是要注意使用場(chǎng)景
	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. 使用~、>>、<<、>>>、|來(lái)取整

相當(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

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

6. 使用^來(lái)完成值交換

在 ES6 的解構(gòu)賦值出來(lái)之前,用這種方式會(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. 使用^判斷符號(hào)是否相同

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

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

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

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

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

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

String

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

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

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

2. 使用 split(0)

使用數(shù)字來(lái)做為 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 來(lái)重復(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 的操作

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

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

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

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

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

總結(jié)

到此這篇關(guān)于JS中位運(yùn)算符的一些妙用的文章就介紹到這了,更多相關(guān)JS位運(yùn)算符妙用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • transport.js和jquery沖突問題的解決方法

    transport.js和jquery沖突問題的解決方法

    這篇文章主要介紹了transport.js和jquery沖突問題的解決方法,需要的朋友可以參考下
    2015-02-02
  • asp錯(cuò)誤 '80040e21' 多步 OLE DB 操作產(chǎn)生錯(cuò)誤

    asp錯(cuò)誤 '80040e21' 多步 OLE DB&nbs

    今天在寫asp入庫(kù)操作的時(shí)候提示Microsoft OLE DB Provider for ODBC Drivers 錯(cuò)誤 80040e21 多步 OLE DB 操作產(chǎn)生錯(cuò)誤,請(qǐng)檢查每個(gè) OLE DB 狀態(tài)值,經(jīng)測(cè)試時(shí)函數(shù)定義文件沒有加載導(dǎo)致類型不對(duì),所以無(wú)法入庫(kù)
    2023-05-05
  • JavaScript中的call和apply的用途以及區(qū)別

    JavaScript中的call和apply的用途以及區(qū)別

    本文主要介紹了JavaScript中的call和apply的用途以及區(qū)別。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • JS中如何優(yōu)雅的使用async await詳解

    JS中如何優(yōu)雅的使用async await詳解

    async表示異步,而await可以看作async wait,個(gè)人對(duì)async與await的簡(jiǎn)單理解就是,我們可以用同步的方式去書寫異步代碼,這篇文章主要給大家介紹了關(guān)于JS中如何優(yōu)雅的使用async await的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 支付寶小程序?qū)崿F(xiàn)類似微信多行輸入功能(思路詳解)

    支付寶小程序?qū)崿F(xiàn)類似微信多行輸入功能(思路詳解)

    這篇文章主要介紹了支付寶小程序?qū)崿F(xiàn)類似微信多行輸入功能,輸入超過 8 行的時(shí)候會(huì)出現(xiàn)滾動(dòng),這樣做的好處就是輸入框不會(huì)直接頂?shù)巾?yè)面最頂部,支付寶小程序?qū)崿F(xiàn)多行輸入框:使用textarea多行輸入框?qū)崿F(xiàn),感興趣的朋友一起看看吧
    2024-02-02
  • JS中innerHTML和pasteHTML的區(qū)別實(shí)例分析

    JS中innerHTML和pasteHTML的區(qū)別實(shí)例分析

    這篇文章主要介紹了JS中innerHTML和pasteHTML的區(qū)別,結(jié)合實(shí)例形式較為詳細(xì)的分析了innerHTML和pasteHTML的具體功能與使用區(qū)別,需要的朋友可以參考下
    2016-06-06
  • 瀏覽器調(diào)試動(dòng)態(tài)js腳本的方法(圖解)

    瀏覽器調(diào)試動(dòng)態(tài)js腳本的方法(圖解)

    這篇文章主要介紹了瀏覽器調(diào)試動(dòng)態(tài)js腳本的方法,文中給大家?guī)?lái)兩種調(diào)試方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 微信小程序-橫向滑動(dòng)scroll-view隱藏滾動(dòng)條

    微信小程序-橫向滑動(dòng)scroll-view隱藏滾動(dòng)條

    本篇文章主要介紹了微信小程序-橫向滑動(dòng)scroll-view隱藏滾動(dòng)條的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • 使用Function.apply()的參數(shù)數(shù)組化來(lái)提高 JavaScript程序性能的技巧

    使用Function.apply()的參數(shù)數(shù)組化來(lái)提高 JavaScript程序性能的技巧

    這篇文章主要介紹了使用Function.apply()的參數(shù)數(shù)組化來(lái)提高 JavaScript程序性能的技巧,對(duì)js function apply相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • EasyUi中的Combogrid 實(shí)現(xiàn)分頁(yè)和動(dòng)態(tài)搜索遠(yuǎn)程數(shù)據(jù)

    EasyUi中的Combogrid 實(shí)現(xiàn)分頁(yè)和動(dòng)態(tài)搜索遠(yuǎn)程數(shù)據(jù)

    jquery easyui中的combogrid比較特殊,算是combo和grid的組合,combogrid結(jié)合一個(gè)可編輯的文本框和下拉數(shù)據(jù)網(wǎng)格面板,可以讓用戶迅速找到并選擇,又可以進(jìn)行搜索,展示與當(dāng)前輸入的字符相匹配的數(shù)據(jù)。下面給大家介紹EasyUi中的Combogrid 實(shí)現(xiàn)分頁(yè)和動(dòng)態(tài)搜索遠(yuǎn)程數(shù)據(jù)
    2016-04-04

最新評(píng)論