أي مجموعة من الأحرف، مثل الأحرف والأرقام والرموز وما إلى ذلك، بين مجموعة من
إما علامتَي الاقتباس المزدوجتَين ("
) أو علامتَي الاقتباس المفردتَين ('
) أو علامتَي الشرطة المائلة للخلف
(`) هي سلسلة أساسية. لقد رأيت سابقًا بعض الأمثلة على السلاسل في
هذه الدورة التدريبية: كانت نُسخ 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.
يؤدي استخدام مثيل للحرف المُغلِق نفسه داخل السلسلة إلى "إغلاق" السلسلة، ما قد يؤدي على الأرجح إلى حدوث أخطاء:
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."
التحقّق من فهمك
ما هو الحرف المستخدَم لفك ترميز الأحرف؟
∖
)"
)/
)ما هو الحرف المستخدَم للدمج؟
+
&
.