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