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"';

親自試一試

字符串長度

內建屬性 length 可返回字符串的長度

實例

var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sln = txt.length;

親自試一試

特殊字符

由于字符串必須由引號包圍,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