摘要:按位取反按位取反運(yùn)算符,對(duì)一個(gè)表達(dá)式執(zhí)行位非求非運(yùn)算。如果語句后面不使用標(biāo)簽,則只能進(jìn)入下一輪的內(nèi)層循環(huán)。語句用于立即終止本輪循環(huán),返回循環(huán)結(jié)構(gòu)的頭部,開始下一輪循環(huán)。代表的是分組,即小括號(hào)里面的小正則捕獲到的內(nèi)容。
JS按位取反
Javascript 按位取反運(yùn)算符 (~) ,對(duì)一個(gè)表達(dá)式執(zhí)行位非(求非)運(yùn)算。如 ~1 = -2; ~2 = -3;
來看看~1的計(jì)算步驟:
將1(這里叫:原碼)轉(zhuǎn)二進(jìn)制 = 00000001
按位取反 = 11111110
發(fā)現(xiàn)符號(hào)位(即最高位)為1(表示負(fù)數(shù)),將除符號(hào)位之外的其他數(shù)字取反 = 10000001
末位加1取其補(bǔ)碼 = 10000010
轉(zhuǎn)換回十進(jìn)制 = -2
語法標(biāo)簽label按位取反的運(yùn)算規(guī)則這么奇怪并不是JavaScript獨(dú)有的,而是所有的計(jì)算機(jī)語言都是這樣的。這樣做的主要原因是為了為了統(tǒng)一減法和加法,在計(jì)算機(jī)中,減法會(huì)變成加一個(gè)負(fù)數(shù),而負(fù)數(shù)會(huì)以補(bǔ)碼的形式存儲(chǔ)。而這樣主要是因?yàn)檠a(bǔ)碼和數(shù)字的十進(jìn)制數(shù)有這么轉(zhuǎn)換關(guān)系,負(fù)數(shù):補(bǔ)碼(x) = -x - 1,正數(shù):補(bǔ)碼(x) = x。
可參考:二進(jìn)制如何轉(zhuǎn)十進(jìn)制,十進(jìn)制如何轉(zhuǎn)二進(jìn)制
問題地址:https://segmentfault.com/q/1010000005697515
JavaScript語言允許,語句的前面有標(biāo)簽(label),相當(dāng)于定位符,用于跳轉(zhuǎn)到程序的任意位置,標(biāo)簽的格式如下。
label: statement
標(biāo)簽可以是任意的標(biāo)識(shí)符,但是不能是保留字,語句部分可以是任意語句。
標(biāo)簽通常與break語句和continue語句配合使用,跳出特定的循環(huán)。
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
面代碼為一個(gè)雙重循環(huán)區(qū)塊,break命令后面加上了top標(biāo)簽(注意,top不用加引號(hào)),滿足條件時(shí),直接跳出雙層循環(huán)。如果break語句后面不使用標(biāo)簽,則只能跳出內(nèi)層循環(huán),進(jìn)入下一次的外層循環(huán)。
continue語句也可以與標(biāo)簽配合使用。
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命令后面有一個(gè)標(biāo)簽名,滿足條件時(shí),會(huì)跳過當(dāng)前循環(huán),直接進(jìn)入下一輪外層循環(huán)。如果continue語句后面不使用標(biāo)簽,則只能進(jìn)入下一輪的內(nèi)層循環(huán)。
說明:
break語句和continue語句都具有跳轉(zhuǎn)作用,可以讓代碼不按既有的順序執(zhí)行。
break語句用于跳出代碼塊或循環(huán)。
continue語句用于立即終止本輪循環(huán),返回循環(huán)結(jié)構(gòu)的頭部,開始下一輪循環(huán)。
str.replace(reg,function(){}) 應(yīng)用的地方很多啊,最基本的就是 比如str 是一串?dāng)?shù)字,比如你要把這些數(shù)字替換成 大寫的漢字
var ary=["一","二","三","四","五","六"] "123456".replace(/d/g,function(){ return ary[argument[0]]; })
還有一種用法就是 不替換 字符串,只是利用replace 可以 匹配幾次,這個(gè)function 就執(zhí)行幾次的特性。來做一些事情,比如格式化時(shí)間字符串。等等。
1??9 是RegExp 自帶的,只要放生了匹配就會(huì)有。 test exec str的replace 都會(huì)有。代表的是 分組,即小括號(hào)里面的小正則 捕獲到的內(nèi)容。
/^(d{4})[/-](d{1,2})[/-](d{1,2})$/
比如這個(gè) 簡(jiǎn)單的匹配 年月日的正則,
我們就可以通過 12 $3 獲取到并進(jìn)行處理。
在一個(gè)例子:
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正則表達(dá)式里的幾對(duì)"()",
比如("(http://www.qidian.com/BookReader/) ,(d+),$n就指的是匹配到的第n個(gè)括號(hào)里的內(nèi)容,**$n主要是用在后面的程序需要引用前面的正則匹配到的內(nèi)容時(shí)。**在這個(gè)例子里:
$1 : http://www.qidian.com/BookReader/
$2 : 1017141
$3 : 20361055
問題地址:https://segmentfault.com/q/1010000005727586
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/89775.html
摘要:數(shù)值表示法科學(xué)計(jì)數(shù)法是一種數(shù)學(xué)術(shù)語,將一個(gè)數(shù)表示為乘以的次方,如光速萬公里每秒,在計(jì)算中通常將米做單位,則記為,而在中我們可使用科學(xué)計(jì)數(shù)法表示。以下情況會(huì)自動(dòng)將數(shù)值轉(zhuǎn)為科學(xué)計(jì)數(shù)法表示小數(shù)點(diǎn)前的數(shù)字多于位。 showImg(https://segmentfault.com/img/bVbhNqT?w=1024&h=683); 因?yàn)榍蚴菆A的,所以不論發(fā)生什么都有可能,對(duì)這點(diǎn)我是深信不疑的,...
摘要:將任一數(shù)值與執(zhí)行按位與操作,其結(jié)果都為。中應(yīng)用判斷奇偶性偶數(shù)奇數(shù)按位異或規(guī)則每一位都不同,結(jié)果才為將任一數(shù)值與進(jìn)行異或操作,其結(jié)果為。 位運(yùn)算在算法中很有用,速度可以比四則運(yùn)算快很多。 To2orTo10 JS中十進(jìn)制轉(zhuǎn)二進(jìn)制: (val).toString(2)JS中二進(jìn)制轉(zhuǎn)十進(jìn)制: parseInt(val, 2) JS中規(guī)定安全整數(shù)的范圍是-2^53~2^53,所以大于90071...
摘要:中的數(shù)字也是按照的標(biāo)準(zhǔn)存儲(chǔ)的,按位存儲(chǔ),但是操作符不會(huì)直接去操作位,會(huì)將位數(shù)轉(zhuǎn)換成位整數(shù)操作,完成運(yùn)算后再轉(zhuǎn)換成位,這個(gè)位對(duì)用戶來說是透明的。雖然經(jīng)常寫,但是還是對(duì)一些按位運(yùn)算比較迷茫。 javascript中的數(shù)字也是按照IEEE754的標(biāo)準(zhǔn)存儲(chǔ)的,按64位存儲(chǔ),但是操作符不會(huì)直接去操作64位,會(huì)將64位數(shù)轉(zhuǎn)換成32位整數(shù)操作,完成運(yùn)算后再轉(zhuǎn)換成64位,這個(gè)64位對(duì)用戶來說是透明的。...
摘要:操作符的兩個(gè)操作數(shù)必須為整數(shù)。函數(shù)調(diào)用用作為函數(shù)調(diào)用操作符。訪問一個(gè)結(jié)構(gòu)的成員結(jié)構(gòu)體成員名結(jié)構(gòu)體指針成員名還是熟悉的栗子在之前的博客請(qǐng)回答語言初識(shí)語言下入門的結(jié)構(gòu)體出現(xiàn)過的栗子名字圖鑒編號(hào)身高重量屬性類型 ...
摘要:一基礎(chǔ)數(shù)據(jù)類型原始類型復(fù)合類型由其他原始類型組合起來的類型運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符加減乘除取模冪地板除的除位運(yùn)算符二進(jìn)制之間的運(yùn)算轉(zhuǎn)換成二進(jìn)制數(shù)將二進(jìn)制轉(zhuǎn)換成十進(jìn)制按位與都為才為按位或存在即為按位異或相同的為不同的為按位取反正數(shù)的補(bǔ)碼,反 一.python基礎(chǔ): 數(shù)據(jù)類型: 原始類型: int float byte 復(fù)合類型: 由其他原始類型組合...
閱讀 3324·2021-11-23 09:51
閱讀 2449·2021-11-09 09:46
閱讀 1482·2019-08-30 15:54
閱讀 3129·2019-08-30 14:22
閱讀 2914·2019-08-29 12:40
閱讀 1636·2019-08-26 10:33
閱讀 1784·2019-08-23 17:09
閱讀 1560·2019-08-23 16:11