สตริง

ชุดอักขระต่างๆ เช่น ตัวอักษร ตัวเลข สัญลักษณ์ เป็นต้น ระหว่างชุดของ เครื่องหมายคำพูดคู่ (") เครื่องหมายคำพูดเดี่ยว (') หรือเครื่องหมายแบ็กทิก (`) เป็นพื้นฐานของสตริง คุณได้เห็นตัวอย่างสตริงบางส่วนแล้วใน หลักสูตรนี้: อินสแตนซ์ของ 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

หากต้องการหลีกเลี่ยงปัญหานี้ ให้กำหนดอักขระเป็น Escape โดยใช้แบ็กสแลช (/) ดังนี้

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.

สามารถส่งลิเทอรัลเทมเพลตไปยังฟังก์ชันที่กำหนดเอง เพื่อสร้างเทมเพลตที่ติดแท็ก ซึ่งเป็นการเรียกฟังก์ชันที่ใช้เทมเพลตเดียว ลิเทอรัลเป็นชุดอาร์กิวเมนต์ และทำให้ตัวยึดตำแหน่งของอาร์กิวเมนต์นี้ป้อนข้อมูลโดยอิงตาม ตรรกะที่ผู้เขียนกำหนด

อาร์กิวเมนต์แรกของฟังก์ชันแท็กมีอาร์เรย์ของค่าสตริง และฟังก์ชัน อาร์กิวเมนต์ที่เหลือจะกำหนดตัวยึดตำแหน่ง อาร์เรย์ของค่าสตริงนี้สร้างขึ้นโดยการ "แยก" สตริงเทมเพลตที่ตัวยึดตําแหน่งแต่ละรายการที่มี อีลิเมนต์แรกในอาร์เรย์มีอักขระใดๆ จนถึงตัวยึดตำแหน่งแรก องค์ประกอบที่ 2 มีอักขระใดๆ ระหว่างค่าที่ 1 และ 2 placeholder และอื่นๆ ตัวยึดตำแหน่งแต่ละตัวจะถูกส่งไปยังฟังก์ชันแท็กเป็น ค่าแบบสแตนด์อโลนที่มีตัวยึดตำแหน่งที่เกี่ยวข้อง

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

ตรวจสอบความเข้าใจ

ตัวละครใดใช้หลีกอักขระ

แบ็กสแลช ()
เครื่องหมายคำพูดคู่ (")
เครื่องหมายทับ (/)

ตัวละครใดที่ใช้สำหรับการต่อสตริง

+
&
.