هر مجموعه ای از کاراکترها - حروف، اعداد، نمادها و غیره - بین مجموعهای از علامتهای نقلقول دوتایی ( "
)، گیومههای تکی ( '
) یا بک تیکها (') یک رشته ابتدایی است. شما قبلاً یک چند نمونه از رشته ها در این دوره: نمونه های 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
یک مقدار مشخص را به یک رشته literal وادار می کند.
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.
حروف الفبای الگو می تواند حاوی عبارات نگهدارنده باشد که با علامت دلار و پرانتزهای فرفری ( ${}
) مشخص شده اند. این متغیرها به طور پیش فرض "interpolated" هستند، به این معنی که نتیجه عبارت جایگزین مکان نگهدار در رشته نهایی می شود.
console.log( "The result is " + ( 2 + 4 ) + "." );
> The result is 6.
console.log( `The result is ${ 2 + 4 }.` );
> The result is 6.
یک template literal میتواند به یک تابع سفارشی برای ایجاد یک الگوی برچسبگذاری شده ارسال شود، یک فراخوانی تابعی که از یک الگوی واقعی به عنوان مجموعهای از آرگومانها استفاده میکند و به متغیرهای آن اجازه میدهد بر اساس منطق تعریفشده توسط نویسنده پر شوند.
آرگومان اول یک تابع تگ حاوی آرایه ای از مقادیر رشته ای است و آرگومان های باقیمانده جایگاه ها را تعریف می کنند. این آرایه از مقادیر رشته ای با "تقسیم" تحت اللفظی الگو در هر محل نگهدارنده ای که در آن قرار دارد ایجاد می شود. عنصر اول در آرایه شامل هر کاراکتری تا جایگاه اول است، عنصر دوم شامل هر کاراکتر بین جایبان اول و دوم و غیره است. هر مکان نگهدار به عنوان یک مقدار مستقل با یک مکان نگهدار مرتبط به تابع برچسب منتقل می شود.
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."
درک خود را بررسی کنید
کدام شخصیت برای فرار از شخصیت ها استفاده می شود؟
/
)"
)∖
)کدام کاراکتر برای الحاق استفاده می شود؟
.
+
&