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?
∖
)"
)/
)Karakter mana yang digunakan untuk penyambungan?
+
&
.