كيفية تعيين سلسلة نصية متعددة الأسطر لمتغير في JavaScript: شرح للمبتدئين
\n\nهل سبق لك أن كتبت نصًا طويلاً في الكود وفكرت: "ألا يمكنني ببساطة الضغط على Enter والاستمرار في سطر جديد؟" إذا كنت مبتدئًا في JavaScript، فمن المحتمل أنك واجهت هذا بالفعل. تحاول حفظ نص متعدد الأسطر في متغير، وتحصل على خطأ نحوي. هل هذا مألوف؟
\n\nالسؤال "How can I assign a multiline string literal to a variable?" هو أحد أكثر الأسئلة شيوعًا على Stack Overflow. آلاف المطورين يبحثون عن إجابة له. وليس من المستغرب: العمل مع السلاسل متعددة الأسطر هو أساس يجب على كل من يكتب بلغة JavaScript إتقانه.
\n\nفي هذه المقالة، لن نقدم إجابة جافة فقط. سنستعرض ثلاث طرق عملية، ونعرض أمثلة من الحياة الواقعية، ونخبرك بالطريقة التي تختارها لجعل كودك نظيفًا وقابلاً للقراءة ولا يسبب الصداع.
\n\nلماذا لا تحب JavaScript فواصل الأسطر داخل علامات الاقتباس؟
\n\nدعنا نوضح المشكلة الرئيسية فورًا. إذا حاولت الكتابة بهذه الطريقة:
\n\nlet message = "مرحبًا!\nكيف حالك؟\nكل شيء على ما يرام؟";\nconsole.log(message);\n\n…ستحصل على خطأ SyntaxError: unterminated string literal. لماذا؟ لأنه في السلاسل العادية (بين علامتي اقتباس مزدوجة أو مفردة)، تعتبر JavaScript أن السلسلة تنتهي في نفس السطر الذي بدأت فيه. فاصل السطر المادي يقطع السلسلة.
\n\nلكن لا تتعجل في الإحباط. لدينا على الأقل ثلاث طرق لتجاوز هذا القيد. وأولها هو الأحدث والأكثر راحة.
\n\nالطريقة 1: القوالب النصية (Template Literals) — صديقك الجديد المفضل
\n\nبدءًا من ES6 (ECMAScript 2015)، ظهرت في JavaScript القوالب النصية. وهي سلاسل تُكتب بين علامتي تنصيص عكسيتين (` `). وهي تحل مشكلة تعدد الأسطر بشكل نهائي.
\n\nانظر كم هذا بسيط:
\n\nlet multilineString = `هذا هو السطر الأول.\nهذا هو السطر الثاني.\nوهذا هو السطر الثالث.`;\n\nconsole.log(multilineString);\n// الإخراج:\n// هذا هو السطر الأول.\n// هذا هو السطر الثاني.\n// وهذا هو السطر الثالث.\n\nكل شيء يعمل مباشرة. أنت فقط تكتب النص مع فواصل الأسطر، وتحتفظ JavaScript بها كما هي. لا رموز إضافية، ولا سحر.
\n\nلماذا هذا هو الخيار الأفضل للمبتدئين؟
\n- \n
- قابلية القراءة: يبدو الكود كما تريد تمامًا. \n
- دعم التداخل: يمكنك إدراج المتغيرات مباشرة في السلسلة عبر
${...}. \n - المعيار: جميع المتصفحات الحديثة و Node.js تدعم القوالب النصية. \n
مثال مع التداخل:
\n\nlet name = "آنا";\nlet greeting = `مرحبًا، ${name}!\nأهلاً بك في PythonLib.\nاليوم يوم رائع لتعلم البرمجة.`;\n\nconsole.log(greeting);\n// الإخراج:\n// مرحبًا، آنا!\n// أهلاً بك في PythonLib.\n// اليوم يوم رائع لتعلم البرمجة.\n\nهذه الطريقة مريحة جدًا لدرجة أنها تُستخدم في 90% من الحالات في التطوير الحديث. إذا كنت مبتدئًا، فتذكرها تحديدًا.
\n\nالطريقة 2: ربط السلاسل (طريقة قديمة لكنها موثوقة)
\n\nقبل ظهور القوالب النصية، كان المطورون يستخدمون الربط — وهو لصق السلاسل باستخدام عامل +. هذه الطريقة لا تزال صالحة، خاصة إذا كنت تعمل مع كود قديم جدًا أو لا تستطيع استخدام ES6 لأي سبب.
كيف يبدو ذلك:
\n\nlet multilineString = "هذا هو السطر الأول.\\n" +\n "هذا هو السطر الثاني.\\n" +\n "وهذا هو السطر الثالث.";\n\nconsole.log(multilineString);\n// الإخراج:\n// هذا هو السطر الأول.\n// هذا هو السطر الثاني.\n// وهذا هو السطر الثالث.\n\nلاحظ \\n — هذا هو تسلسل الهروب
المدونات
توصيات الكتب
اقرأ أيضًا