摘要:中的字符串也像那樣支持反斜杠的轉(zhuǎn)移并且字符集方面默認(rèn)為下面就來詳細(xì)解析中的字符串類型與字符編碼支持定義字符串就是零個或多個排在一起的字符,放在單引號或雙引號之中。后面緊跟四個十六進(jìn)制數(shù)到,代表一個字符。
JavaScript中的字符串也像Python那樣支持反斜杠的轉(zhuǎn)移,并且字符集方面默認(rèn)為Unicode,下面就來詳細(xì)解析JavaScript中的字符串類型與字符編碼支持
定義 字符串就是零個或多個排在一起的字符,放在單引號或雙引號之中。
`"abc"` `"abc"`
單引號字符串的內(nèi)部,可以使用雙引號。雙引號字符串的內(nèi)部,可以使用單引號。
"key = "value"" "It"s a long journey"
上面兩個都是合法的字符串。如果要在單引號字符串的內(nèi)部,使用單引號(或者在雙引號字符串的內(nèi)部,使用雙引號),就必須在內(nèi)部的單引號(或者雙引號)前面加上反斜杠,用來轉(zhuǎn)義。
`"Did she say "Hello"?"` `// "Did she say "Hello"?"` `"Did she say "Hello"?"` `// "Did she say "Hello"?"`
由于HTML語言的屬性值使用雙引號,所以很多項目約定JavaScript語言的字符串只使用單引號,本教程就遵守這個約定。當(dāng)然,只使用雙引號也完全可以。重要的是,堅持使用一種風(fēng)格,不要兩種風(fēng)格混合。字符串默認(rèn)只能寫在一行內(nèi),分成多行將會報錯。
`"a` `b` `c"` `// SyntaxError: Unexpected token ILLEGAL`
上面代碼將一個字符串分成三行,JavaScript就會報錯。
如果長字符串必須分成多行,可以在每一行的尾部使用反斜杠。
`var` `longString =` `"Long ` `long ` `long ` `string"``;` `logString` `// "Long long long string"`
上面代碼表示,加了反斜杠以后,原來寫在一行的字符串,可以分成多行書寫。但是,輸出的時候還是單行,效果與寫在同一行完全一樣。注意,反斜杠的后面必須是換行符,而不能有其他字符(比如空格),否則會報錯。連接運算符(+)可以連接多個單行字符串,將長字符串拆成多行書寫,輸出的時候也是單行。
`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)有特殊含義,用來表示一些特殊字符,所以又稱為轉(zhuǎn)義符。
需要用反斜杠轉(zhuǎn)義的特殊字符,主要有下面這些:
0 null(u0000)
b 后退鍵(u0008)
f 換頁符(u000C)
n 換行符(u000A)
r 回車鍵(u000D)
t 制表符(u0009)
v 垂直制表符(u000B)
" 單引號(u0027)
" 雙引號(u0022)
反斜杠(u005C)
上面這些字符前面加上反斜杠,都表示特殊含義。
`console.log(``"1 2"``)` `// 1` `// 2`
上面代碼中,n表示換行,輸出的時候就分成了兩行。
反斜杠還有三種特殊用法。
(1)HHH
反斜杠后面緊跟三個八進(jìn)制數(shù)(000到377),代表一個字符。HHH對應(yīng)該字符的Unicode碼點,比如251表示版權(quán)符號。顯然,這種方法只能輸出256種字符。
(2)xHH
x后面緊跟兩個十六進(jìn)制數(shù)(00到FF),代表一個字符。HH對應(yīng)該字符的Unicode碼點,比如xA9表示版權(quán)符號。這種方法也只能輸出256種字符。
(3)uXXXX
u后面緊跟四個十六進(jìn)制數(shù)(0000到FFFF),代表一個字符。HHHH對應(yīng)該字符的Unicode碼點,比如u00A9表示版權(quán)符號。
下面是這三種字符特殊寫法的例子。
`"251"` `// "?"` `"xA9"` `// "?"` `"u00A9"` `// "?"` `"172"` `===` `"z"` `// true` `"x7A"` `===` `"z"` `// true` `"u007A"` `===` `"z"` `// true`
如果在非特殊字符前面使用反斜杠,則反斜杠會被省略。
`"a"` `// "a"`
上面代碼中,a是一個正常字符,前面加反斜杠沒有特殊含義,反斜杠會被自動省略。
如果字符串的正常內(nèi)容之中,需要包含反斜杠,則反斜杠前面需要再加一個反斜杠,用來對自身轉(zhuǎn)義。
`"Prev Next"` `// "Prev Next"`
字符串與數(shù)組 字符串可以被視為字符數(shù)組,因此可以使用數(shù)組的方括號運算符,用來返回某個位置的字符(位置編號從0開始)。
`var` `s =` `"hello"``;` `s[0]` `// "h"` `s[1]` `// "e"` `s[4]` `// "o"`
// 直接對字符串使用方括號運算符
"hello"``[1] // "e"如果方括號中的數(shù)字超過字符串的長度,或者方括號中根本不是數(shù)字,則返回undefined。
`"abc"``[3]` `// undefined` `"abc"``[-1]` `// undefined` `"abc"``[``"x"``]` `// undefined`
但是,字符串與數(shù)組的相似性僅此而已。實際上,無法改變字符串之中的單個字符。
`var` `s =` `"hello"``;` `delete` `s[0];` `s` `// "hello"` `s[1] =` `"a"``;` `s` `// "hello"` `s[5] =` `"!"``;` `s `// "hello"`
上面代碼表示,字符串內(nèi)部的單個字符無法改變和增刪,這些操作會默默地失敗。字符串之所以類似于字符數(shù)組,實際是由于對字符串進(jìn)行方括號運算時,字符串會自動轉(zhuǎn)換為一個字符串對象。
length屬性 length屬性返回字符串的長度,該屬性也是無法改變的。
`var` `s =` `"hello"``;` `s.length` `// 5` `s.length = 3;` `s.length` `// 5` `s.length = 7;` `s.length` `// 5`
上面代碼表示字符串的length屬性無法改變,但是不會報錯。字符集 JavaScript使用Unicode字符集,也就是說在JavaScript內(nèi)部,所有字符都用Unicode表示。
不僅JavaScript內(nèi)部使用Unicode儲存字符,而且還可以直接在程序中使用Unicode,所有字符都可以寫成”uxxxx”的形式,其中xxxx代表該字符的Unicode編碼。比如,u00A9代表版權(quán)符號。
`var` `s =` `"u00A9"``;` `s` `// "?"`
每個字符在JavaScript內(nèi)部都是以16位(即2個字節(jié))的UTF-16格式儲存。也就是說,JavaScript的單位字符長度固定為16位長度,即2個字節(jié)。但是,UTF-16有兩種長度:對于U+0000到U+FFFF之間的字符,長度為16位(即2個字節(jié));對于U+10000到U+10FFFF之間的字符,長度為32位(即4個字節(jié)),而且前兩個字節(jié)在0xD800到0xDBFF之間,后兩個字節(jié)在0xDC00到0xDFFF之間。舉例來說,U+1D306對應(yīng)的字符為
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/108561.html
摘要:編碼轉(zhuǎn)換為編碼下面讓我們來看下如何將編碼的數(shù)據(jù)轉(zhuǎn)換為編碼的數(shù)據(jù)。該方法是將碼進(jìn)行編碼轉(zhuǎn)換,從而得到編碼的數(shù)據(jù)。 概述 當(dāng)你在前端需要通過二進(jìn)制數(shù)據(jù)與服務(wù)端進(jìn)行通信時,你可能會遇到二進(jìn)制數(shù)據(jù)的編碼問題。大部分服務(wù)端的字符串編碼類型都為UTF-8,而JavaScript中字符串編碼類型是UTF-16,因此,你需要一個能夠?qū)⒆址趦煞N編碼方式間進(jìn)行轉(zhuǎn)換的方法。 本文通過對utfx.js這個...
摘要:事件中屬性等于。響應(yīng)的狀態(tài)為或者。同步在上會產(chǎn)生頁面假死的問題。表示聲明的變量未初始化,轉(zhuǎn)換為數(shù)值時為。但并非所有瀏覽器都支持事件捕獲。它由兩部分構(gòu)成函數(shù),以及創(chuàng)建該函數(shù)的環(huán)境。 1 介紹JavaScript的基本數(shù)據(jù)類型Number、String 、Boolean 、Null、Undefined Object 是 JavaScript 中所有對象的父對象數(shù)據(jù)封裝類對象:Object、...
摘要:是什么是一種輕量級的數(shù)據(jù)交換格式,采用完全獨立于語言的文本格式,是理想的數(shù)據(jù)交換格式。同時,是原生格式,這意味著在中處理數(shù)據(jù)不需要任何特殊的或工具包。底層存儲為格式是個構(gòu)建在之上的新型查詢語言。 JSON是什么? JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,采用完全獨立于語言的文本格式,是理想的數(shù)據(jù)交換格式。同時,JSON是 Java...
閱讀 1005·2023-04-26 01:47
閱讀 1684·2021-11-18 13:19
閱讀 2053·2019-08-30 15:44
閱讀 668·2019-08-30 15:44
閱讀 2307·2019-08-30 15:44
閱讀 1243·2019-08-30 14:06
閱讀 1430·2019-08-30 12:59
閱讀 1908·2019-08-29 12:49