国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

小tips:JS之按位取反,語法標簽label,正則表達式中replace的0,1是什么?

n7then / 950人閱讀

摘要:按位取反按位取反運算符,對一個表達式執行位非求非運算。如果語句后面不使用標簽,則只能進入下一輪的內層循環。語句用于立即終止本輪循環,返回循環結構的頭部,開始下一輪循環。代表的是分組,即小括號里面的小正則捕獲到的內容。

JS按位取反

Javascript 按位取反運算符 (~) ,對一個表達式執行位非(求非)運算。如 ~1 = -2; ~2 = -3;
來看看~1的計算步驟:

將1(這里叫:原碼)轉二進制 = 00000001

按位取反 = 11111110

發現符號位(即最高位)為1(表示負數),將除符號位之外的其他數字取反 = 10000001

末位加1取其補碼 = 10000010

轉換回十進制 = -2

按位取反的運算規則這么奇怪并不是JavaScript獨有的,而是所有的計算機語言都是這樣的。這樣做的主要原因是為了為了統一減法和加法,在計算機中,減法會變成加一個負數,而負數會以補碼的形式存儲。而這樣主要是因為補碼和數字的十進制數有這么轉換關系,負數:補碼(x) = -x - 1,正數:補碼(x) = x
可參考:二進制如何轉十進制,十進制如何轉二進制
問題地址:https://segmentfault.com/q/1010000005697515

語法標簽label

JavaScript語言允許,語句的前面有標簽(label),相當于定位符,用于跳轉到程序的任意位置,標簽的格式如下。

label:
  statement

標簽可以是任意的標識符,但是不能是保留字,語句部分可以是任意語句。
標簽通常與break語句和continue語句配合使用,跳出特定的循環。

top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) break top;
      console.log("i=" + i + ", j=" + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0

面代碼為一個雙重循環區塊,break命令后面加上了top標簽(注意,top不用加引號),滿足條件時,直接跳出雙層循環。如果break語句后面不使用標簽,則只能跳出內層循環,進入下一次的外層循環。

continue語句也可以與標簽配合使用。

top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) continue top;
      console.log("i=" + i + ", j=" + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
// i=2, j=0
// i=2, j=1
// i=2, j=2

上面代碼中,continue命令后面有一個標簽名,滿足條件時,會跳過當前循環,直接進入下一輪外層循環。如果continue語句后面不使用標簽,則只能進入下一輪的內層循環。

說明:
break語句和continue語句都具有跳轉作用,可以讓代碼不按既有的順序執行。
break語句用于跳出代碼塊或循環。
continue語句用于立即終止本輪循環,返回循環結構的頭部,開始下一輪循環。

正則表達式中replace的0,1是什么?

str.replace(reg,function(){}) 應用的地方很多啊,最基本的就是 比如str 是一串數字,比如你要把這些數字替換成 大寫的漢字

    var ary=["一","二","三","四","五","六"]
        "123456".replace(/d/g,function(){
            return ary[argument[0]];
        })

還有一種用法就是 不替換 字符串,只是利用replace 可以 匹配幾次,這個function 就執行幾次的特性。來做一些事情,比如格式化時間字符串。等等。

1??9 是RegExp 自帶的,只要放生了匹配就會有。 test exec str的replace 都會有。代表的是 分組,即小括號里面的小正則 捕獲到的內容。

/^(d{4})[/-](d{1,2})[/-](d{1,2})$/
比如這個 簡單的匹配 年月日的正則,
我們就可以通過 12 $3 獲取到并進行處理。

在一個例子:

    var reg=new RegExp("(http://www.qidian.com/BookReader/)(d+),(d+).aspx","gmi");
    var url="http://www.qidian.com/BookReader/1017141,20361055.aspx";
    
    var rep=url.replace(reg,"$1ShowBook.aspx?bookId=$2&chapterId=$3");

你可能注意到了,在reg正則表達式里的幾對"()",
比如("(http://www.qidian.com/BookReader/)(d+),$n就指的是匹配到的第n個括號里的內容,**$n主要是用在后面的程序需要引用前面的正則匹配到的內容時。**在這個例子里:

$1 : http://www.qidian.com/BookReader/
$2 : 1017141
$3 : 20361055

問題地址:https://segmentfault.com/q/1010000005727586

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/89775.html

相關文章

  • JavaScript“黑話”

    摘要:數值表示法科學計數法是一種數學術語,將一個數表示為乘以的次方,如光速萬公里每秒,在計算中通常將米做單位,則記為,而在中我們可使用科學計數法表示。以下情況會自動將數值轉為科學計數法表示小數點前的數字多于位。 showImg(https://segmentfault.com/img/bVbhNqT?w=1024&h=683); 因為球是圓的,所以不論發生什么都有可能,對這點我是深信不疑的,...

    fjcgreat 評論0 收藏0
  • 按位操作符

    摘要:將任一數值與執行按位與操作,其結果都為。中應用判斷奇偶性偶數奇數按位異或規則每一位都不同,結果才為將任一數值與進行異或操作,其結果為。 位運算在算法中很有用,速度可以比四則運算快很多。 To2orTo10 JS中十進制轉二進制: (val).toString(2)JS中二進制轉十進制: parseInt(val, 2) JS中規定安全整數的范圍是-2^53~2^53,所以大于90071...

    caiyongji 評論0 收藏0
  • js按位運算

    摘要:中的數字也是按照的標準存儲的,按位存儲,但是操作符不會直接去操作位,會將位數轉換成位整數操作,完成運算后再轉換成位,這個位對用戶來說是透明的。雖然經常寫,但是還是對一些按位運算比較迷茫。 javascript中的數字也是按照IEEE754的標準存儲的,按64位存儲,但是操作符不會直接去操作64位,會將64位數轉換成32位整數操作,完成運算后再轉換成64位,這個64位對用戶來說是透明的。...

    cnio 評論0 收藏0
  • 請回答c語言-操作符【入門】

    摘要:操作符的兩個操作數必須為整數。函數調用用作為函數調用操作符。訪問一個結構的成員結構體成員名結構體指針成員名還是熟悉的栗子在之前的博客請回答語言初識語言下入門的結構體出現過的栗子名字圖鑒編號身高重量屬性類型 ...

    frolc 評論0 收藏0
  • 001_第一部分_[Python基礎]

    摘要:一基礎數據類型原始類型復合類型由其他原始類型組合起來的類型運算符和表達式算術運算符加減乘除取模冪地板除的除位運算符二進制之間的運算轉換成二進制數將二進制轉換成十進制按位與都為才為按位或存在即為按位異或相同的為不同的為按位取反正數的補碼,反 一.python基礎: 數據類型: 原始類型: int float byte 復合類型: 由其他原始類型組合...

    WrBug 評論0 收藏0

發表評論

0條評論

n7then

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<