String

Setiap kumpulan karakter—huruf, angka, simbol, dan sebagainya—di antara kumpulan tanda kutip ganda ("), tanda kutip tunggal ('), atau tanda petik terbalik (`) adalah primitif string. Anda telah melihat beberapa contoh string dalam kursus ini: instance console.log dalam modul sebelumnya berisi primitif string.

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

"Hello, World." adalah primitif string. Anda mendapatkan hasil yang sama dengan tanda kutip tunggal atau tanda petik terbalik:

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

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

Rangkaian karakter yang diapit tanda kutip disebut string literal. Tanda petik ganda dan tunggal berperilaku dengan cara yang sama, dan salah satunya dapat berisi yang lain sebagai karakter dalam string itu sendiri:

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

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

Instance karakter penutup yang sama dalam string "menutup" string, yang kemungkinan menyebabkan error:

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

Untuk menghindarinya, lakukan escape pada karakter menggunakan garis miring terbalik (\):

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

Objek string

Saat dipanggil sebagai fungsi, objek String akan memaksa nilai yang ditentukan ke literal string.

let myString = String( 10 );

myString
> "10"

typeof myString
> string

Seperti yang dijelaskan dalam pewarisan prototipe, Anda jarang perlu menggunakan objek String sebagai konstruktor. Metode ini membuat objek string yang berisi nilai yang ditentukan, bersama dengan metode dan properti yang sudah disediakan oleh objek String, bukan literal string.

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

typeof stringObj
> object

stringObj
> String { "My new string." }

Penyambungan

Jika digunakan dalam konteks string, bukan angka, satu tanda plus (+) akan berfungsi sebagai operator penggabungan, yang menggabungkan beberapa nilai string menjadi satu string:

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

Literal string dan literal template

Tanda kutip tunggal, tanda kutip ganda, dan tanda petik terbalik dapat digunakan secara bergantian untuk membuat primitif string. Namun, Anda juga dapat menggunakan tanda petik terbalik untuk menentukan literal template (terkadang disebut "string template"). Tidak seperti literal string yang dibuat dengan tanda kutip tunggal atau ganda, literal template memungkinkan string multibaris dan interpolasi 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.

Literal template dapat berisi ekspresi placeholder yang ditandai dengan tanda dolar dan tanda kurung kurawal (${}). Placeholder ini "diselipkan" secara default, yang berarti bahwa hasil ekspresi akan menggantikan placeholder dalam string akhir.

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

Literal template dapat diteruskan ke fungsi kustom untuk membuat template bertag, panggilan fungsi yang menggunakan satu literal template sebagai kumpulan argumen dan memungkinkan placeholder-nya diisi berdasarkan logika yang ditentukan penulis.

Argumen pertama fungsi tag berisi array nilai string, dan argumen lainnya menentukan placeholder. Array nilai string ini dibuat dengan "memisahkan" literal template di setiap placeholder yang dikandungnya. Elemen pertama dalam array berisi karakter apa pun hingga placeholder pertama, elemen kedua berisi karakter apa pun antara placeholder pertama dan kedua, dan seterusnya. Setiap placeholder diteruskan ke fungsi tag sebagai nilai mandiri dengan placeholder terkait.

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."

Memeriksa pemahaman Anda

Karakter mana yang digunakan untuk meng-escape karakter?

Garis miring terbalik ()
Tanda kutip ganda (")
Garis miring (/)

Karakter mana yang digunakan untuk penyambungan?

+
&
.