成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

解析JavaScript中的字符串類型與字符編碼支持

sarva / 2916人閱讀

摘要:中的字符串也像那樣支持反斜杠的轉(zhuǎn)移并且字符集方面默認(rèn)為下面就來(lái)詳細(xì)解析中的字符串類型與字符編碼支持定義字符串就是零個(gè)或多個(gè)排在一起的字符,放在單引號(hào)或雙引號(hào)之中。后面緊跟四個(gè)十六進(jìn)制數(shù)到,代表一個(gè)字符。

JavaScript中的字符串也像Python那樣支持反斜杠的轉(zhuǎn)移,并且字符集方面默認(rèn)為Unicode,下面就來(lái)詳細(xì)解析JavaScript中的字符串類型與字符編碼支持

定義 字符串就是零個(gè)或多個(gè)排在一起的字符,放在單引號(hào)或雙引號(hào)之中。
`"abc"`
`"abc"`
單引號(hào)字符串的內(nèi)部,可以使用雙引號(hào)。雙引號(hào)字符串的內(nèi)部,可以使用單引號(hào)。
"key = "value""
"It"s a long journey"
上面兩個(gè)都是合法的字符串。

如果要在單引號(hào)字符串的內(nèi)部,使用單引號(hào)(或者在雙引號(hào)字符串的內(nèi)部,使用雙引號(hào)),就必須在內(nèi)部的單引號(hào)(或者雙引號(hào))前面加上反斜杠,用來(lái)轉(zhuǎn)義。

`"Did she say "Hello"?"`
`// "Did she say "Hello"?"`
`"Did she say "Hello"?"`
`// "Did she say "Hello"?"`
由于HTML語(yǔ)言的屬性值使用雙引號(hào),所以很多項(xiàng)目約定JavaScript語(yǔ)言的字符串只使用單引號(hào),本教程就遵守這個(gè)約定。當(dāng)然,只使用雙引號(hào)也完全可以。重要的是,堅(jiān)持使用一種風(fēng)格,不要兩種風(fēng)格混合。

字符串默認(rèn)只能寫在一行內(nèi),分成多行將會(huì)報(bào)錯(cuò)。

`"a`
`b`
`c"`
`// SyntaxError: Unexpected token ILLEGAL`
上面代碼將一個(gè)字符串分成三行,JavaScript就會(huì)報(bào)錯(cuò)。
如果長(zhǎng)字符串必須分成多行,可以在每一行的尾部使用反斜杠。
`var` `longString =` `"Long `
`long `
`long `
`string"``;`
`logString`
`// "Long long long string"`
上面代碼表示,加了反斜杠以后,原來(lái)寫在一行的字符串,可以分成多行書(shū)寫。但是,輸出的時(shí)候還是單行,效果與寫在同一行完全一樣。注意,反斜杠的后面必須是換行符,而不能有其他字符(比如空格),否則會(huì)報(bào)錯(cuò)。

連接運(yùn)算符(+)可以連接多個(gè)單行字符串,將長(zhǎng)字符串拆成多行書(shū)寫,輸出的時(shí)候也是單行。

`var` `longString =` `"Long "`
`+` `"long "`
`+` `"long "`
`+` `"string"``;`
如果想輸出多行字符串,有一種利用多行注釋的變通方法。
`(``function` `() {` `/*`
`line 1`
`line 2`
`line 3`
`*/``}).toString().split(``"
"``).slice(1, -1).join(``"
"``)`
`// "line 1`
`// line 2`
`// line 3"`
上面的例子中,輸出的字符串就是多行。

轉(zhuǎn)義 反斜杠()在字符串內(nèi)有特殊含義,用來(lái)表示一些特殊字符,所以又稱為轉(zhuǎn)義符。

需要用反斜杠轉(zhuǎn)義的特殊字符,主要有下面這些:

0 null(u0000)

b 后退鍵(u0008)

f 換頁(yè)符(u000C)

n 換行符(u000A)

r 回車鍵(u000D)

t 制表符(u0009)

v 垂直制表符(u000B)

" 單引號(hào)(u0027)

" 雙引號(hào)(u0022)

反斜杠(u005C)

上面這些字符前面加上反斜杠,都表示特殊含義。
`console.log(``"1
2"``)`
`// 1`
`// 2`
上面代碼中,n表示換行,輸出的時(shí)候就分成了兩行。
反斜杠還有三種特殊用法。

(1)HHH
反斜杠后面緊跟三個(gè)八進(jìn)制數(shù)(000到377),代表一個(gè)字符。HHH對(duì)應(yīng)該字符的Unicode碼點(diǎn),比如251表示版權(quán)符號(hào)。顯然,這種方法只能輸出256種字符。

(2)xHH
x后面緊跟兩個(gè)十六進(jìn)制數(shù)(00到FF),代表一個(gè)字符。HH對(duì)應(yīng)該字符的Unicode碼點(diǎn),比如xA9表示版權(quán)符號(hào)。這種方法也只能輸出256種字符。

(3)uXXXX
u后面緊跟四個(gè)十六進(jìn)制數(shù)(0000到FFFF),代表一個(gè)字符。HHHH對(duì)應(yīng)該字符的Unicode碼點(diǎn),比如u00A9表示版權(quán)符號(hào)。

下面是這三種字符特殊寫法的例子。
`"251"` `// "?"`
`"xA9"` `// "?"`
`"u00A9"` `// "?"`
`"172"` `===` `"z"` `// true`
`"x7A"` `===` `"z"` `// true`
`"u007A"` `===` `"z"` `// true`
如果在非特殊字符前面使用反斜杠,則反斜杠會(huì)被省略。
`"a"`
`// "a"`
上面代碼中,a是一個(gè)正常字符,前面加反斜杠沒(méi)有特殊含義,反斜杠會(huì)被自動(dòng)省略。
如果字符串的正常內(nèi)容之中,需要包含反斜杠,則反斜杠前面需要再加一個(gè)反斜杠,用來(lái)對(duì)自身轉(zhuǎn)義。
`"Prev  Next"`
`// "Prev  Next"`
字符串與數(shù)組 字符串可以被視為字符數(shù)組,因此可以使用數(shù)組的方括號(hào)運(yùn)算符,用來(lái)返回某個(gè)位置的字符(位置編號(hào)從0開(kāi)始)。
`var` `s =` `"hello"``;`
`s[0]` `// "h"`
`s[1]` `// "e"`
`s[4]` `// "o"`
// 直接對(duì)字符串使用方括號(hào)運(yùn)算符
"hello"``[1] // "e"

如果方括號(hào)中的數(shù)字超過(guò)字符串的長(zhǎng)度,或者方括號(hào)中根本不是數(shù)字,則返回undefined。

`"abc"``[3]` `// undefined`
`"abc"``[-1]` `// undefined`
`"abc"``[``"x"``]` `// undefined`
但是,字符串與數(shù)組的相似性僅此而已。實(shí)際上,無(wú)法改變字符串之中的單個(gè)字符。
`var` `s =` `"hello"``;`
`delete` `s[0];`
`s` `// "hello"`
`s[1] =` `"a"``;`
`s` `// "hello"`
`s[5] =` `"!"``;`
`s  `// "hello"`
上面代碼表示,字符串內(nèi)部的單個(gè)字符無(wú)法改變和增刪,這些操作會(huì)默默地失敗。

字符串之所以類似于字符數(shù)組,實(shí)際是由于對(duì)字符串進(jìn)行方括號(hào)運(yùn)算時(shí),字符串會(huì)自動(dòng)轉(zhuǎn)換為一個(gè)字符串對(duì)象。

length屬性 length屬性返回字符串的長(zhǎng)度,該屬性也是無(wú)法改變的。

`var` `s =` `"hello"``;`
`s.length` `// 5`
`s.length = 3;`
`s.length` `// 5`
`s.length = 7;`
`s.length` `// 5`
上面代碼表示字符串的length屬性無(wú)法改變,但是不會(huì)報(bào)錯(cuò)。

字符集 JavaScript使用Unicode字符集,也就是說(shuō)在JavaScript內(nèi)部,所有字符都用Unicode表示。

不僅JavaScript內(nèi)部使用Unicode儲(chǔ)存字符,而且還可以直接在程序中使用Unicode,所有字符都可以寫成”uxxxx”的形式,其中xxxx代表該字符的Unicode編碼。比如,u00A9代表版權(quán)符號(hào)。

`var` `s =` `"u00A9"``;`
`s` `// "?"`
每個(gè)字符在JavaScript內(nèi)部都是以16位(即2個(gè)字節(jié))的UTF-16格式儲(chǔ)存。也就是說(shuō),JavaScript的單位字符長(zhǎng)度固定為16位長(zhǎng)度,即2個(gè)字節(jié)。

但是,UTF-16有兩種長(zhǎng)度:對(duì)于U+0000到U+FFFF之間的字符,長(zhǎng)度為16位(即2個(gè)字節(jié));對(duì)于U+10000到U+10FFFF之間的字符,長(zhǎng)度為32位(即4個(gè)字節(jié)),而且前兩個(gè)字節(jié)在0xD800到0xDBFF之間,后兩個(gè)字節(jié)在0xDC00到0xDFFF之間。舉例來(lái)說(shuō),U+1D306對(duì)應(yīng)的字符為

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108561.html

相關(guān)文章

  • JavaScript如何實(shí)現(xiàn)UTF-16編碼轉(zhuǎn)換為UTF-8編碼——utfx.js源碼解析

    摘要:編碼轉(zhuǎn)換為編碼下面讓我們來(lái)看下如何將編碼的數(shù)據(jù)轉(zhuǎn)換為編碼的數(shù)據(jù)。該方法是將碼進(jìn)行編碼轉(zhuǎn)換,從而得到編碼的數(shù)據(jù)。 概述 當(dāng)你在前端需要通過(guò)二進(jìn)制數(shù)據(jù)與服務(wù)端進(jìn)行通信時(shí),你可能會(huì)遇到二進(jìn)制數(shù)據(jù)的編碼問(wèn)題。大部分服務(wù)端的字符串編碼類型都為UTF-8,而JavaScript中字符串編碼類型是UTF-16,因此,你需要一個(gè)能夠?qū)⒆址趦煞N編碼方式間進(jìn)行轉(zhuǎn)換的方法。 本文通過(guò)對(duì)utfx.js這個(gè)...

    maybe_009 評(píng)論0 收藏0
  • 50道JavaScript基礎(chǔ)面試題(附答案)

    摘要:事件中屬性等于。響應(yīng)的狀態(tài)為或者。同步在上會(huì)產(chǎn)生頁(yè)面假死的問(wèn)題。表示聲明的變量未初始化,轉(zhuǎn)換為數(shù)值時(shí)為。但并非所有瀏覽器都支持事件捕獲。它由兩部分構(gòu)成函數(shù),以及創(chuàng)建該函數(shù)的環(huán)境。 1 介紹JavaScript的基本數(shù)據(jù)類型Number、String 、Boolean 、Null、Undefined Object 是 JavaScript 中所有對(duì)象的父對(duì)象數(shù)據(jù)封裝類對(duì)象:Object、...

    huaixiaoz 評(píng)論0 收藏0
  • JSON數(shù)據(jù)格式及其在WEB開(kāi)發(fā)中的應(yīng)用

    摘要:是什么是一種輕量級(jí)的數(shù)據(jù)交換格式,采用完全獨(dú)立于語(yǔ)言的文本格式,是理想的數(shù)據(jù)交換格式。同時(shí),是原生格式,這意味著在中處理數(shù)據(jù)不需要任何特殊的或工具包。底層存儲(chǔ)為格式是個(gè)構(gòu)建在之上的新型查詢語(yǔ)言。 JSON是什么? JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,采用完全獨(dú)立于語(yǔ)言的文本格式,是理想的數(shù)據(jù)交換格式。同時(shí),JSON是 Java...

    red_bricks 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

sarva

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<