字串

一組中間的字元集,包括字母、數字、符號等 雙引號 (")、單引號 (') 或倒引號 (`) 是字串基元。您已看過幾個 本課程:先前單元中包含的 console.log 例項 字串基元

console.log( "Hello, World." );
> Hello, World.

"Hello, World." 是字串原始類型。若是如此 引號或倒引號:

console.log( 'Hello, World.' );
> Hello, World.

console.log(`Hello, World.`);
> Hello, World.

以引號括住的一系列字元稱為「字串常值」。 雙引號和單引號會以相同方式運作,其中一個引號可以包含另一個引號 做為字串本身的字元:

console.log( "I'm a string." );
> I'm a string.

console.log( '"A string," I said.' );
> "A string," I said.

相同包含在字串「closes」中相同字元的例項這個 字串,可能會導致錯誤:

console.log( '"I'm a string," I said.' );
> Uncaught SyntaxError: missing ) after argument list

為了避免發生這種情況,請使用反斜線 (/) 逸出字元:

console.log( '"I\'m a string," I said.' );
> "I'm a string," I said.

字串物件

呼叫做為函式時,String 物件會將指定值強制轉換成 字串常值。

let myString = String( 10 );

myString
> "10"

typeof myString
> string

通訊協定繼承所述, 您很少需要用到 String 物件做為建構函式。系統會建立 包含指定值的字串物件,以及方法和 String 物件已釋放的屬性,而不是字串常值。

let stringObj = new String( "My new string." );

typeof stringObj
> object

stringObj
> String { "My new string." }

串連

用於字串而非數字時,系統會有一個加號 (+) 就像是串連運算子,可將多個字串值合併成單一 字串:

console.log( "My" + " string." );
> My string.

字串常值和範本常值

單引號、雙引號和倒引號都可以交替使用, 建立字串基元不過,您也可以使用反引號指定範本字面值 (有時稱為「範本字串」)。與 由單引號或雙引號建立的字串常值,範本常值允許 ,用於多行字串和字串內插類型。

const myString = "This
is a string.";
> Uncaught SyntaxError: "" string literal contains an unescaped line break

const myString = `This
is a string.`;

console.log( myString );

> This
is a string.

範本常值可包含以美元符號標示的預留位置運算式 和大括號 (${})。這些預留位置是「內插」根據預設 表示運算式結果會取代最終的預留位置 字串。

console.log( "The result is " + ( 2 + 4 ) + "." );
> The result is 6.
console.log( `The result is ${ 2 + 4 }.` );
> The result is 6.

範本常值可以傳送至自訂函式 :建立標記範本;也就是使用單一範本的函式呼叫 做為引數集的常值,並可讓其預留位置根據 作者定義的邏輯。

標記函式的第一個引數包含字串值陣列, 剩餘引數會定義預留位置。這個字串值陣列是 就會以「分割」建立套用範本常值陣列中的第一個元素包含第一個預留位置之前的任何字元,第二個元素包含第一個和第二個預留位置之間的任何字元,依此類推。每個預留位置都會以 與相關預留位置的獨立值

const myNoun = "template literal";

function myTagFunction( myStrings, myPlaceholder ) {
    const myInitialString = myStrings[ 0 ];
    console.log( `${ myInitialString }modified ${ myPlaceholder }.` );
}

myTagFunction`I'm a ${ myNoun }.`;
> "I'm a modified template literal."

隨堂測驗

哪個字元用於逸出字元?

正斜線 (/)
反斜線 ()
雙引號 (")

哪個字元可用於串連?

.
&
+