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