JavaScript 字符串
JavaScript 字符串用于存儲和操作文本。
JavaScript 字符串
JavaScript 字符串是引號中的零個或多個字符。
實例
var x = "Bill Gates"
您能夠使用單引號或雙引號:
實例
var carname = "Porsche 911"; var carname = 'Porsche 911';
您可以在字符串中使用引號,只要不匹配圍繞字符串的引號即可:
實例
var answer = "It's good to see you again!"; var answer = "He is called 'Bill'"; var answer = 'He is called "Bill"';
特殊字符
由于字符串必須由引號包圍,JavaScript 會誤解這段字符串:
var y = "中國是瓷器的故鄉,因此 china 與"China(中國)"同名。"
該字符串將被切為 "中國是瓷器的故鄉,因此 china 與"。
避免此問題的解決方法是,使用 \ 轉義字符。
反斜杠轉義字符把特殊字符轉換為字符串字符:
代碼 | 結果 | 描述 |
---|---|---|
\' | ' | 單引號 |
\" | " | 雙引號 |
\\ | \ | 反斜杠 |
實例
序列 \"
在字符串中插入雙引號:
實例
var x = "中國是瓷器的故鄉,因此 china 與\"China(中國)\"同名。"
序列 \'
在字符串中插入單引號:
實例
var x = 'It\'s good to see you again';
序列 \\
在字符串中插入反斜杠:
實例
var x = "字符 \\ 被稱為反斜杠。";
轉義字符(\
)也可用于在字符串中插入其他特殊字符。
其他六個 JavaScript 中有效的轉義序列:
代碼 | 結果 |
---|---|
\b | 退格鍵 |
\f | 換頁 |
\n | 新行 |
\r | 回車 |
\t | 水平制表符 |
\v | 垂直制表符 |
這六個轉義字符最初設計用于控制打字機、電傳打字機和傳真機。它們在 HTML 中沒有任何意義。
長代碼行換行
為了最佳可讀性, 程序員們通常會避免每行代碼超過 80 個字符串。
如果某條 JavaScript 語句不適合一整行,那么最佳換行位置是某個運算符之后:
實例
document.getElementById("demo").innerHTML = "Hello Kitty.";
您也可以在字符串中換行,通過一個反斜杠即可:
實例
document.getElementById("demo").innerHTML = "Hello \ Kitty!";
\
方法并不是 ECMAScript (JavaScript) 標準。
某些瀏覽器也不允許 \
字符之后的空格。
對長字符串換行的最安全做法(但是有點慢)是使用字符串加法:
實例
document.getElementById("demo").innerHTML = "Hello" + "Kitty!";
您不能通過反斜杠對代碼行進行換行:
實例
document.getElementById("demo").innerHTML = \ "Hello Kitty!";
字符串可以是對象
通常,JavaScript 字符串是原始值,通過字面方式創建:
var firstName = "Bill"
但是字符串也可通過關鍵詞 new
定義為對象:
var firstName = new String("Bill")
實例
var x = "Bill"; var y = new String("Bill"); // typeof x 將返回 string // typeof y 將返回 object
請不要把字符串創建為對象。它會拖慢執行速度。
new
關鍵字使代碼復雜化。也可能產生一些意想不到的結果:
當使用 ==
相等運算符時,相等字符串是相等的:
實例
var x = "Bill"; var y = new String("Bill"); // (x == y) 為 true,因為 x 和 y 的值相等
當使用 ===
運算符時,相等字符串是不相等的,因為 ===
運算符需要類型和值同時相等。
實例
var x = "Bill"; var y = new String("Bill"); // (x === y) 為 false,因為 x 和 y 的類型不同(字符串與對象)
甚至更糟。對象無法比較:
實例
var x = new String("Bill"); var y = new String("Bill"); // (x == y) 為 false,因為 x 和 y 是不同的對象
實例
var x = new String("Bill"); var y = new String("Bill"); // (x === y) 為 false,因為 x 和 y 是不同的對象
請注意 (x==y) 與 (x===y) 的區別。
JavaScript 對象無法進行對比,比較兩個 JavaScript 將始終返回 false
。