جاوا اسکریپت - عملگرهای شرطی و بولی. مثال های عبارات شرطی Jquery elseif

در این مقاله به بررسی عملگرهای شرطی و منطقی زبان جاوا اسکریپت می پردازیم.

عبارات شرطی جاوا اسکریپت

اظهارات مشروطعباراتی در زبان جاوا اسکریپت (ECMAScript) هستند که بسته به شرایطی، به شما امکان می دهند یک یا چند دستورالعمل خاص را اجرا کنید.

اشکال عبارات شرطی در جاوا اسکریپت:

  • دستور if شرطی (با یک شاخه)؛
  • عملگر شرطی if...else (با دو شاخه);
  • else if... عبارت شرطی (با چند شاخه);
  • عملگر سه تایی (?: );
  • عبارت switch

بیانیه if شرطی

نحو دستور if:

اگر (شرط) بیانیه

عبارت شرطی if شامل موارد زیر است:

  • کلمه کلیدیاگر ؛
  • شرایط (عبارات داخل پرانتز)، که باید درست یا نادرست باشند (یا به یکی از این مقادیر ریخته شوند).
  • دستورالعمل هایی که باید دنبال کنیداگر شرط درست باشد یا به آن بستگی داشته باشد.

مثلا:

اگر (درست) تعداد = 4;

این مثال از true به عنوان شرط استفاده می کند. این بدان معنی است که دستور count = 4 همیشه اجرا می شود. این مثالفقط برای توضیح نحوه عملکرد دستور if داده شده است، زیرا تهی از هر معنایی است

به عنوان مثال، بیایید مقدار متغیر votes را 1 افزایش دهیم اگر (نوع آن) یک عدد باشد:

اگر (نوع آرا === "تعداد") votes++;

اگر نیاز به اجرای چندین دستورالعمل دارید، باید آنها را در براکت های فرفری قرار دهید:

If (نوع آرا === "تعداد") ( votes++; console.log ("تعداد آرا: " + آرا)؛ )

اگر (نوع آرا === "تعداد") (رای++؛ )

اگر... بیانیه دیگری

دستور if...else زمانی استفاده می‌شود که اجرای برخی دستورات زمانی که یک شرط درست است، و برخی دیگر زمانی که یک شرط نادرست است، مورد استفاده قرار می‌گیرد.

نحو:

If (شرط) (یک یا چند دستور (که باید در صورت درست بودن شرط اجرا شود یا به درستی داده شود)) دیگری (یک یا چند دستور (در صورت false بودن شرط یا cast به false اجرا می شود)

به عنوان مثال، بیایید پیامی در مورد زوج بودن یا نبودن عدد به کنسول چاپ کنیم:

If (عدد % 2) ( console.log("عدد فرد است!")؛ else (consol.log("عدد زوج است!")؛ )

قاعده ای برای تبدیل شرط به درست یا نادرست

اگر عبارت موجود در یک عبارت if برابر با true یا false نباشد، جاوا اسکریپت آن را به یکی از آن مقادیر ارسال می کند. او این عمل را با کمک به اصطلاح «قاعده دروغ» انجام می دهد.

معنی این قانون: هر عبارت درست است به جز مقادیر زیر:

  • نادرست (کاذب)؛
  • "" یا "" (رشته خالی)؛
  • NaN (نوع داده عددی ویژه "نه عدد")؛
  • 0 (عدد "صفر")؛
  • null (مقدار "خالی")؛
  • undefined (مقدار "تعریف نشده").

به عنوان مثال، بسته به مقدار ذخیره شده در متغیر nameUser، یک پیام خوشامدگویی را در کنسول مرورگر چاپ کنیم:

If (nameUser) ( console.log ("سلام، " + نام + "!")؛ ) else (consol.log ("سلام، مهمان!")؛ )

اگر متغیر nameUser حاوی یک رشته خالی باشد، طبق قانون دروغ، به مقدار false فرستاده می شود. بنابراین پیغام «سلام مهمان!» در کنسول نمایش داده می شود. .

و اگر، برای مثال، متغیر nameUser حاوی رشته "Timur" باشد، عبارت موجود در شرط به مقدار true فرستاده می شود. در نتیجه کنسول پیام "سلام تیمور!" .

عبارت else if... (شرایط متعدد)

نحو:

If (شرط 1) (گزاره های 1) else if (شرط 2) (گزاره های 2) else if (شرط 3) (گزاره های 3 //...) else if (شرطN) (گزاره های N) else (گزاره هایی که اجرا می شوند اگر هیچ یک از شرایط درست نیست یا به این مقدار داده نشده است)

عملگر شرطی (سه تایی) (?:)

اپراتور سه تایییک عملگر جاوا اسکریپت است که می تواند در مواقع ضروری، بسته به شرایط، برای اجرای یکی از دو عبارت داده شده استفاده شود.

نحو:

وضعیت؟ بیان1: بیان2

عملگر سه تایی از سه عملوند تشکیل شده است که با استفاده از نمادها از هم جدا می شوند؟ و: . شرط عملگر سه تایی در عملوند اول مشخص شده است. همچنین می توان آن را در پرانتز قرار داد. اگر شرط درست باشد یا به این مقدار ریخته شود، عبارت 1 اجرا می شود، در غیر این صورت عبارت2 اجرا می شود.

مثلا:

(تعداد > 10) console.log("عدد بزرگتر از 10 است!") : console.log("عدد کمتر یا مساوی 10 است");

جاوا اسکریپت به چندین عملگر سه تایی (?:):

Var dayNumber = new Date().getDay(); روز = (تعداد روز === 0) ? "یکشنبه" : (روز تعداد === 1) ? "دوشنبه" : (روزشماره === 2) ? "سه شنبه" : (روزشماره === 3) ? "چهارشنبه" : (روز شماره === 4) ? "پنجشنبه" : (روزشماره === 5) ? "جمعه" : (روز تعداد === 6) ? "شنبه" : "روز نامعلوم هفته"؛ console.log("امروز" +day.toLowerCase() + ".");

مثال بالا، اما با استفاده از چند دستور if...else:

Var dayNumber = new Date().getDay(); if (dayNumber === 0) (day = "یکشنبه"؛ ) other if (dayNumber === 1) (روز = "دوشنبه"؛ ) other if (dayNumber === 2) (روز = "سه شنبه"؛ ) else if (dayNumber === 3) ( روز = "چهارشنبه"؛ ) other if (dayNumber === 4) (روز = "پنجشنبه"؛ ) other if (dayNumber === 5) (روز = "جمعه"; ) else if (dayNumber === 6) (روز = "شنبه"؛ ) else (روز = "روز ناشناخته هفته"؛ ) console.log("امروز است" + day.toLowerCase() + ".") ;

عبارت switch

دستور switch برای اجرای یک نسخه از دستورالعمل ها از بین چندین، بسته به مقدار عبارت طراحی شده است. انتخاب یک یا گزینه دیگر با برابری دقیق نتیجه بیان به مقدار مورد (مورد) تعیین می شود.

نحو دستور سوئیچ:

سوئیچ (عبارت) (مقدار case1: // ... دستورالعمل هایی که اگر نتیجه عبارت "value1" باشد، اجرا می شود؛ // دستورالعمل اختیاری (در صورت عدم استفاده، دستور بعدی دستور switch اجرا می شود) case value2 : // ... دستورالعمل هایی که در صورت ارزیابی عبارت به "value2" شکسته اجرا می شوند؛ // دستورالعمل اختیاری (در صورت استفاده نشدن، دستور بعدی دستور switch اجرا می شود) // ... case valueN: / / . .. دستورالعمل هایی که اگر نتیجه عبارت "valueN" باشد اجرا می شوند، شکستن؛ // دستورالعمل اختیاری (اگر استفاده نشود، دستور بعدی دستور switch اجرا می شود) پیش فرض: // دستورالعمل هایی که اگر نتیجه عبارت is not برابر است با بیش از یکی از مقادیر)

کلمه کلیدی پیش فرض اختیاری است. زمانی استفاده می‌شود که لازم است دستورالعمل‌هایی را مشخص کنیم که اگر نتیجه یک عبارت با هیچ مقدار کوچکی برابر نباشد، اجرا شوند.

عبارت break اختیاری است. طراحی شده است تا اجرای دستور switch را قطع کند و کنترل را به دستورالعملی که بعد از آن می آید منتقل کند.

به عنوان مثال، بیایید یک پیام در کنسول مرورگر در مورد تعداد آب نبات ها نمایش دهیم:

Var countCandyBoys = 1, countCandyGirls = 2, message; سوئیچ (countCandyBoys + countCandyGirls) ( مورد 1: پیام = "یک آب نبات"؛ شکست؛ مورد 2: مورد 3: پیام = "دو یا سه آب نبات"؛ شکست؛ مورد 4: پیام = "چهار آب نبات"؛ شکست؛ پیش‌فرض: message = "نه یک، نه دو، نه سه یا چهار آب نبات"؛ ) // چاپ پیام به کنسول console.log(message);

در مثال بالا، عبارت ارزیابی شده 3 است. بنابراین، عبارت عبارت = "Two or three candies" و break اجرا می شود. دستور break اجرای بیشتر دستور switch را قطع می کند و کنترل را به دستور بعدی منتقل می کند. console.log(پیام) . این یک پیام به کنسول چاپ می کند "دو سه شیرینی".

به عنوان مثال، اجازه دهید روز جاری هفته را در کنسول نمایش دهیم:

var day = ""; switch(new Date().getDay()) ( case 0: day = "Sunday"; break; case 1: day = "Monday"; break; case 2: day = "Tuesday"; break; case 3: day = "چهارشنبه"؛ استراحت؛ مورد 4: روز = "پنجشنبه"؛ استراحت؛ مورد 5: روز = "جمعه"؛ استراحت؛ مورد 6: روز = "شنبه"؛ استراحت؛ پیش فرض: روز = "روز نامعلوم هفته" ; ) console.log("Today is " + day.toLowerCase() + ".");

مثالی که از دستور break استفاده نمی کند:

varresult = "موفقیت"; سوئیچ (نتیجه) (مورد "موفقیت": console.log ("موفقیت!")؛ مورد "invalidCaptcha": console.log ("کپچای نامعتبر!")؛ پیش فرض: console.log ("خطا!")؛ )

در این مثال، عبارت switch برابر با موفقیت است. بنابراین دستور console.log("موفقیت!") اجرا می شود که پیام "موفقیت!" به کنسول اما از آنجایی که بعد از آن دستور break وجود ندارد، اجرای اسکریپت در نوع بعدی ادامه خواهد داشت. بنابراین، دستورالعمل‌ها تا زمانی اجرا می‌شوند که با شکست در مسیر مواجه شویم یا به انتهای دستور switch برسیم. در نتیجه اجرای این مثال، 3 پیام در کنسول نمایش داده می شود: "موفقیت!" ، "کپچای اشتباه!"و "خطا!" .

در برخی موارد، این رفتار ممکن است مورد نیاز باشد، اما در این مورد نه. اینجا فقط یک اشتباه است.

مثال تصحیح شده:

varresult = "موفقیت"; سوئیچ (نتیجه) (مورد "موفقیت": console.log("موفقیت!")؛ شکستن؛ مورد "invalidCaptcha": console.log ("کپچای نامعتبر!")؛ شکست؛ پیش فرض: console.log ("خطا!" ))

عملگرهای منطقی

جاوا اسکریپت بین عملگرهای منطقی زیر تمایز قائل می شود:

  • && - منطقی "AND";
  • || - منطقی "OR"؛
  • ! منطقی "نه".

اگر در بیان بولیاز مقادیر بولی operand1 && operand2 استفاده می شود، اگر هر یک از آنها درست باشد، نتیجه این عبارت درست خواهد بود. در غیر این صورت، مقدار این عبارت نادرست خواهد بود.

نادرست && نادرست // غلط درست && نادرست // نادرست نادرست && درست // نادرست درست && درست // درست

اگر عبارت بولی operand1 && operand2 از مقادیر غیر بولی استفاده کند، در صورتی که بتوان آن را به false تبدیل کرد، نتیجه این عبارت operand1 است. در غیر این صورت، نتیجه این عبارت operand2 خواهد بود.

5 && 0 // 0 1 && 5 // 5 "string" && undefined // undefined "string1" && "string2" // "string2"

اگر در عبارت منطقی operand1 || از مقادیر بولی operand2 استفاده می شود، اگر حداقل یکی از آنها درست باشد، نتیجه این عبارت درست خواهد بود. در غیر این صورت، مقدار این عبارت نادرست خواهد بود.

نادرست || نادرست // نادرست درست || غلط // درست غلط || درست // واقعی واقعی || صحیح صحیح

اگر در عبارت منطقی operand1 || operand2 از مقادیر غیر بولی استفاده می کند، سپس اگر بتوان آن را به true تبدیل کرد، نتیجه این عبارت operand1 است. در غیر این صورت، نتیجه این عبارت operand2 خواهد بود.

5 || 0 // 5 1 || 5 // 1 "خط" || تعریف نشده // "string" "string1" || "line2" // "line1"

اگر operand1 نادرست باشد یا بتوان آن را به آن مقدار فرستاد، عبارت بولی!operand1 به درستی ارزیابی می‌کند. در غیر این صورت، این عبارت به false ارزیابی می شود.

نادرست // true !true // false !"string" // false !5 // false"

اپراتور مشروطبه شما امکان می دهد بسته به نتیجه ارزیابی عبارت - شرط مشخص شده، بلوک خاصی از کد را رد یا اجرا کنید. می توان گفت که دستور شرطی نقطه تصمیم گیری در برنامه است، گاهی اوقات به آن دستور شاخه نیز می گویند. اگر تصور کنیم که برنامه یک جاده است، و مترجم PHPمسافری است که در امتداد آن قدم می‌زند، سپس عبارات شرطی را می‌توان به‌عنوان تقاطع در نظر گرفت، جایی که کد برنامه به دو یا چند جاده منشعب می‌شود و در چنین چهارراه‌هایی مترجم باید انتخاب کند که کدام جاده حرکت کند.

اگر بیانیه

دستور if ساده ترین دستور شاخه است.

نحو دستور if:

دستور if ابتدا عبارت شرطی مشخص شده در پرانتز را ارزیابی می کند، نتیجه این عبارت یک مقدار بولی است. اگر نتیجه درست (درست) باشد، دستورالعمل اجرا می شود. اگر عبارت به false ارزیابی شود، دستور اجرا نمی شود. یک عبارت با هر پیچیدگی می تواند به عنوان یک شرط استفاده شود.

اگر فقط از یک دستور در بدنه دستور if استفاده شود، محصور کردن آن در پرانتزهای فرفری امکان پذیر است، اما لازم نیست. با این حال، اگر می خواهید بیش از یک دستور را در بدنه یک دستور if اجرا کنید، این چند دستور باید در پرانتزهای فرفری محصور شوند. توجه داشته باشید که بریس بسته شدن نباید با نقطه ویرگول دنبال شود.

کد زیر استفاده از دستور if را نشان می دهد:

if را می توان در داخل دستورات if دیگر تودرتو کرد:

توجه کن به آخرین نمونه: لازم نیست دستورالعمل دقیقاً زیر دستور if نوشته شود، اگر اندازه دستورالعمل بزرگ نباشد، می توان آن را در یک خط نوشت.

اگر غیر از بیانیه

و بنابراین ما آموختیم که دستور if به شما امکان می دهد در صورت درست بودن شرط، دستورات را اجرا کنید. اگر شرط نادرست باشد، هیچ اقدامی انجام نمی شود. با این حال، اغلب لازم است که در صورت درست بودن یک شرط خاص، برخی دستورالعمل ها و اگر شرط نادرست است، دستورالعمل ها را اجرا کنید. برای چنین مواردی است که در غیر این صورت از انشعاب استفاده می شود. این عبارت از یک دستور if به دنبال یک بلوک از عبارات و یک کلمه کلیدی else و سپس یک بلوک دیگر از عبارات تشکیل شده است.

نحو دستور if else این است:

عبارت else اختیاری است. بلوک عبارت واقع بعد از else به طور پیش فرض اجرا می شود، یعنی. هنگامی که عبارت شرطی در if به نادرست ارزیابی می شود. دستور else را نمی توان جدا از دستور if استفاده کرد. بلوک else فقط باید بعد از دستور if قرار گیرد، می توان آن را به عنوان عمل پیش فرض در نظر گرفت.

با کمی اصلاح مثال قبلی، می‌توانیم ببینیم که اگر شرط به غلط ارزیابی شود، دستور if else چگونه کار می‌کند:

عبارت if else را می توان تودرتو کرد. چنین عبارات شرطی تو در تو در عمل بسیار رایج هستند. اگر دستور if در بلوک if یا else تودرتو باشد. اگر کد از چندین دستور if در یک ردیف استفاده می کند، else همیشه به نزدیکترین اگر اشاره می کند:

مورد آخر برای if($a) صدق نمی‌کند، زیرا in نیست واحد داخلی، بنابراین نزدیکترین مورد به آن if($i) می شود. عبارت else در داخل بلوک مربوط به if($b) است زیرا if نزدیکترین به آن است.

elseif/else if ساخت

دستور if / else مقدار عبارت شرطی را ارزیابی می کند و یک قطعه یا قطعه دیگر را اجرا می کند کد برنامه. اما اگر یکی از چندین فرگمنت نیاز به اجرا داشته باشد چه؟ اگر باید چندین شرط را پشت سر هم بررسی کنید، ساختار elseif یا other if برای این کار مناسب است (آنها ساختار یکسانی هستند، فقط متفاوت نوشته شده اند). از نظر فنی یک ساختار مستقل PHP نیست - فقط یک سبک معمول برنامه نویسی است که از عبارات if/else مکرر استفاده می کند. این به شما امکان می‌دهد تا شرایط اضافی را تا زمانی که یک مورد واقعی پیدا شود یا به یک بلوک other دست پیدا کنید، آزمایش کنید. otherif/else if ساختباید بعد از دستور if و قبل قرار گیرد بیانیه else، اگر وجود داشته باشد.

در اینجا سه ​​شرط بررسی می شود و بسته به مقدار متغیر $username، اقدامات مختلفی انجام می شود.

در واقع هیچ چیز خاصی در مورد این قطعه وجود ندارد. این فقط دنباله ای از دستورات if است، که در آن هر دستور if بخشی از ساختار else از if قبلی است. برای کسانی که برای اولین بار با این شکل از نشانه‌گذاری مواجه شده‌اند و نحوه کارکرد آن برایشان چندان روشن نیست، ما همین مثال را بازنویسی می‌کنیم، فقط به شکل نحوی معادل که تودرتوی ساختارها را به طور کامل نشان می‌دهد:

var a = 10; varb = (a>1) ? 100:200; هشدار (ب)؛

اگر شرط a>1درست است، سپس متغیر بیک مقدار اختصاص دهید 100 ، در غیر این صورت به متغیر b مقدار داده می شود 200 .

Task Js 3_4.تکمیل کد: 3 متغیر محلی با استفاده از کلمه کلیدی var اعلام می شوند. لازم است که مقدار عملگر سه تایی زیر را به متغیر max نسبت دهیم: اگر a بزرگتر از b باشد، a را برگردانید، در غیر این صورت b را برگردانید.
قطعه کد:

اگر (a*b< 6) { result = "Мало"; } else { result = "Много"; }


سوالاتی برای خودکنترلی:

  1. نحو عملگر سه تایی چیست؟
  2. یک عملگر سه تایی چند آرگومان دارد؟

عبارت Switch در جاوا اسکریپت - سوئیچ

دستور سوئیچ جاوا اسکریپت برای آزمایش یک متغیر برای چندین مقدار استفاده می کند:

نحو:

سوئیچ (متغیر یا عبارت) ( case option1: //..statement block.. break case option2: //..statement block.. break default: //..statement block.. )

مقدار یک متغیر یا عبارت بررسی می شود: در هر کدام موردیکی از مقادیر بررسی می شود، در صورت وجود یک مقدار مناسب، یک یا بلوک دیگر از دستورات مربوط به مورد داده شده اجرا می شود. مورد.

بلوکی که با کلمه سرویس پیش فرض شروع می شود را می توان حذف کرد. اگر هیچ یک از مقادیر لیست شده در کل نباشد، دستورات بلاک اجرا می شود موردمناسب نیست.

مهم:دستور break بعد از هر مقدار در نظر گرفته شده از متغیر (بعد از هر مورد) اگر از آن استفاده نشود، تمام عبارات زیر نمایش داده می شود

مقایسه با اپراتور اگر:

var a = 2; switch(a) ( case 0: // if (a === 0) case 1: // if (a === 0) alert("صفر یا یک"); // سپس خروجی... break; case 2: // if (a === 2) alert("Two")؛ // سپس خروجی... break؛ پیش فرض: // else alert("Many")؛ // در غیر این صورت خروجی... )

چگونه چندین گزینه را گروه بندی کنیم؟

برای اجرای همان دستورات، می توان چندین گروه را گروه بندی کرد مورد. مانند مثال بالا:

مورد 0: مورد 1: هشدار ("صفر یا یک")؛ زنگ تفريح؛ ...

وقتی a = 0 و a = 1، همان عبارت اجرا می شود: alert("صفر یا یک");

مثال 4:از کاربر بخواهید یک رنگ را وارد کند. ارسال ترجمه به زبان انگلیسیرنگ وارد کرد برای رنگ "آبی"و "آبی"همان ارزش را تولید کند.


✍ راه حل:
  • یک صفحه وب با اسکلت و تگ html ایجاد کنید اسکریپت.
  • مقداردهی اولیه متغیر رنگ
  • var color = prompt("چه رنگی؟" );

    var color = prompt("چه رنگی؟");

  • مقدار یک متغیر را با یک ساختار بررسی کنید تعویض، خروجی برای هر مقدار ترجمه مربوطه:
  • سوئیچ (رنگ) (حساب "قرمز" : هشدار("قرمز")؛ شکست؛ حروف سبز: هشدار("سبز")؛ شکست؛ // ...

    اگر متغیر رنگدارای مقدار "قرمز"، سپس خروجی به پنجره مودالترجمه - "قرمز" و خروج از ساخت و ساز (شکستن؛). اگر متغیر رنگدارای مقدار "سبز" است، سپس ترجمه - "سبز" را در پنجره مدال نمایش می دهد و از ساخت و ساز خارج می شود (شکست؛).

  • برای گل "آبی"و "آبی"گروه بندی را انجام دهید:
  • // ... case "blue": case "blue": alert("blue"); زنگ تفريح؛ //...

    اگر متغیر رنگدارای مقدار "آبی" یا متغیر است رنگدارای مقدار "آبی" است، سپس ترجمه - "آبی" را در پنجره مدال نمایش می دهد و از ساخت و ساز خارج می شود (شکست؛).

  • خروجی را برای رنگ هایی که توسط برنامه ارائه نشده اند سازماندهی کنید:
  • // ... پیش فرض: هشدار( "ما اطلاعاتی برای این رنگ نداریم") ) // کلید پایان

    // ... پیش فرض: alert("y ما هیچ اطلاعاتی در مورد این رنگ نداریم") ) // انتهای سوئیچ

  • اسکریپت را در مرورگر تست کنید.

Task Js 3_6.خطاها را در قطعه کد زیر پیدا و رفع کنید:

14 15 16 17 varnumber = prompt( "شماره 1 یا 2 را وارد کنید:") ؛ سوئیچ (عدد) ( case "1" ( document.write ("One") ;) ; break ; case "2" ( document.write ("Two") ;) ; break ; default ( document.write ( "شما مقداری غیر از 1 و 2 وارد کردید") ; } ; }

var number = prompt("شماره 1 یا 2 را وارد کنید:"); سوئیچ (شماره) ( مورد "1" ( document.write ("One"); ); break; case "2" ( document.write("دو"); )؛ break; default ( document.write ("شما وارد کردید مقداری غیر از 1 و 2")؛ ))


Task Js 3_7.با اجرای کد زیر چه چیزی روی صفحه نمایش داده می شود؟

1 2 3 4 5 6 7 8 9 10 11 12 13 var value = "2" ; سوئیچ (مقدار) (مورد "1" : مورد "2" : مورد "3" : document.write ("سلام") ؛ شکستن ؛ مورد "4" : مورد "5" : document.write ("World" ) ؛ پیش فرض: document.write("خطا") ;)

مقدار var = "2"; سوئیچ (مقدار) (مورد "1": مورد "2": مورد "3": document.write ("سلام")؛ شکست؛ مورد "4": مورد "5": document.write("World" )؛ پیش فرض: document.write ("خطا")؛ )


Task Js 3_8.از کاربر یک عدد بخواهید - تعداد کلاغ های روی شاخه. بسته به عدد وارد شده (بیشتر از 10) پیامی نمایش می دهد: - نشستن روی شاخه 1 کلاغ- نشستن روی شاخه 4 کلاغ- نشستن روی شاخه 10 کلاغ

  1. بسته به عدد وارد شده، انتهای کلمه تغییر می کند. "کلاغ".
  2. برای بررسی از دستور سوئیچ جاوا اسکریپت استفاده کنید.
  3. صرفه جویی این صفحهدر پوشه نتایج (برای کار بیشتر مفید خواهد بود).


سوالاتی برای خودکنترلی:

  1. چه زمانی استفاده از ساخت و ساز به عنوان عملگر مشروط مناسب است؟ تعویض?
  2. هدف از بلوک پیش فرض در عبارت چیست؟ تعویض?
  3. آیا استفاده از دستور break در ساخت لازم است؟ تعویض?
  4. چگونه گروه بندی برای گزینه های چند مقدار در یک عملگر انجام می شود تعویض?

عبارات حلقه در جاوا اسکریپت - برای

نحو:

برای (مقدار شمارنده اولیه؛ شرط؛ افزایش شمارنده) ( //.. بلوک بیانیه.. )

مهم:جاوا اسکریپت برای حلقه زمانی استفاده می شود که از قبل مشخص شده باشد که اقدامات چرخه ای چند بار باید تکرار شوند (حلقه چند بار تکرار دارد)

  • یک عبارت انتساب به عنوان مقدار اولیه شمارنده تکرار استفاده می شود: به عنوان مثال، i=0 - شمارنده حلقه از صفر شروع می شود:
  • for(var i = 0؛ شرط؛ افزایش شمارنده) (//.. بلوک عبارت.. )

  • به عنوان یک افزایش شمارنده، مرحله ای که شمارنده باید با آن افزایش یابد نشان داده می شود: به عنوان مثال، نشان می دهد که هر تکرار حلقه با افزایش آن همراه خواهد بود. 1 :
  • برای (var i = 0؛ شرط؛ i++) (//.. بلوک بیانیه.. )

  • شرط حلقه مقدار پایانی شمارنده است: برای مثال i10 حلقه را متوقف می کند:
  • for(var i = 0; i<10; i++) { //..блок операторов.. }

مثالی از استفاده از حلقه for در جاوا اسکریپت را در نظر بگیرید:

مثال 5:دنباله ای از اعداد را خروجی بگیرید 0 1 2 3 ... 9 ، هر رقم - از یک خط جدید. 0 1 2 ... 8 9


✍ راه حل:
  • برای نمایش دنباله ای از اعداد، از شمارنده حلقه for استفاده می کنیم که باید مقدار آن را از آن تغییر دهد 0 قبل از 9 با توجه به ترتیب
  • بنابراین برای مقدار اولیه شمارنده حلقهمقدار را به 0 ; مانند شرایط چرخهمقدار نهایی را تنظیم کنید - ii=9; گام شمارنده باید برابر باشد 1 (i++)، زیرا تفاوت بین اعضای دنباله یک است:
  • برای (var i=0; i<10; i++) { document.write(i+"
    "); }

    در مثال، مقادیر شمارنده حلقه روی صفحه نمایش داده می شود، زیرا افزایش شمارنده i++ به ترتیب روی صفحه ظاهر می شود. 0 1 2 3 ... 9 و هر رقم - از یک خط جدید (برچسب
    ).

  • اسکریپت را در مرورگر تست کنید.

Task Js 3_9. 1 قبل از 15 .

  1. از یک شمارنده حلقه به عنوان دنباله ای از اعداد استفاده کنید برای.
  2. برای متغیر جمع کننده، از شناسه متغیر استفاده کنید مجموع.

قطعه کد:

برای (var i=...;...;...)( sum = sum + ...; ) ...

بیانیه های خروج حلقه زنگ تفريحو ادامه هیددر جاوا اسکریپت اپراتور خروج

دستور break اجرای کل بدنه حلقه را قطع می کند، یعنی. از یک حلقه در جاوا اسکریپت خارج می شود.

در حالی که دستور continue اجرای تکرار فعلی حلقه را قطع می کند، اما در حالی که اجرای حلقه را از تکرار بعدی ادامه می دهد.

عملیات شکست و ادامه دستورات را با استفاده از یک مثال در نظر بگیرید:

مثال:الگوریتم قطعه کد را درک کنید. خروجی چه خواهد بود؟

قطعه کد:

1 2 3 4 5 6 برای (var i= 0 ; i< 10 ; i++ ) { if (i== 4 ) continue ; document.write (i+ "
" ) ؛ اگر (i== 8 ) شکسته شود ;)

برای (var i=0;i<10;i++) { if (i==4) continue; document.write(i+"
")؛ اگر (i==8) شکست؛ )


✍ راه حل:
  • در خط سوم مثال، شرطی وجود دارد که به دلیل آن عدد 4 نمایش داده نخواهد شد: عملگر ادامه هیدبدون تکمیل حلقه فعلی به تکرار بعدی حلقه خواهد رفت.
  • در خط شماره 5 حلقه خارج می شود اما عدد 8 روی صفحه چاپ می شود، زیرا دستور خروجی قبل از شرط (در خط 4) قرار می گیرد. ملاقات کردن زنگ تفريح، مفسر از حلقه خارج می شود.
  • که روی صفحه نمایش خواهد بود: 0 1 2 3 5 6 7 8 - هر رقم در یک خط جدید.

Task Js 3_10.چاپ مجموع تمام اعداد صحیح از 1 قبل از 15 ، به استثنای تعداد کل 5 و 7 .

بیانیه خروج

زبان javasctipt یک عملگر برای خروج از کد برنامه ارائه می دهد - عملگر خروج.
اغلب از اپراتور برای حذف خطای ورودی کاربر استفاده می شود.


به یک مثال توجه کنید:

مثال 6:از کاربر بخواهید یک عدد وارد کند. اگر عدد نیست، یک پیام نمایش دهید "یک عدد مورد نیاز است!"و برنامه را متوقف کنید.


✍ راه حل:
  • مقداردهی اولیه متغیر عددمقدار وارد شده توسط کاربر در پنجره مدال:
  • var number = prompt("لطفا یک عدد وارد کنید");

  • با استفاده از تابع parseInt برای تبدیل رشته به عدد صحیح، بررسی کنید که آیا مقدار ورودی یک عدد است یا خیر:
  • number=parseInt(number); // NaN را برمی گرداند - نه یک عدد

    اگر یک عدد غیر وارد شده باشد، تابع مقدار NaN را برمی گرداند. یک عدد نیست- عدد نیست).

  • مقدار متغیر را بررسی کنید عددبا استفاده از تابع isNaN:
  • x = isNaN(عدد); // اگر مقدار عددی نباشد مقدار true را برمی گرداند

    تابع isNaN مقدار را برمی گرداند درست است، واقعیاگر متغیر یک عدد نباشد

  • توسط قانون "دروغ"سازماندهی بررسی مقدار متغیر ایکس. اگر مقدار عددی نیست، کامنت مربوطه را چاپ کنید و برنامه را پایان دهید:
  • if (x)( هشدار ("تعداد مورد نیاز!")؛ خروج؛ // خروج از برنامه )

  • برای ادامه برنامه (اگر مقدار وارد شده یک عدد بود)، پنجره زیر را برای ورودی نمایش دهید:
  • alert("شماره دوم را وارد کنید");// اگر عددی را وارد نکنید، اپراتور اجرا نخواهد شد

  • اسکریپت را در مرورگر تست کنید.

سوالاتی برای خودکنترلی:

  1. سه پارامتر حلقه را فهرست کنید برایو هدف آنها را توضیح دهید.
  2. کدام عبارات برای خروج از حلقه و قطع آن در نظر گرفته شده است؟ مثال هایی از کاربرد آنها بیاورید.
  3. اپراتور برای چیست؟ خروج?

آیا امکان وجود چندین شمارنده در یک FOR وجود دارد؟

یک کار جالب با حلقه for هنگام استفاده امکان پذیر است به طور همزمان دو شمارنده در یک چرخه.
به یک مثال توجه کنید:

مثال 7:با استفاده از اسکریپت، جفت های متغیر-مقدار زیر را در سه خط چاپ کنید: i=0 j=2 i=1 j=3 i=2 j=4


✍ راه حل:
  • دو شمارنده را در حلقه for سازماندهی کنید: شمارنده i برای خروجی دنباله 0 1 2 ، شمارنده j برای خروجی دنباله 2 3 4 :
  • 1 2 3 برای (i= 0، j= 2؛ i< 10 , j< 5 ; i++, j++ ) { }

    برای (i=0، j=2؛ i<10, j<5; i++, j++) { }

    هر یک از سه پارامتر حلقه for اکنون دارای دو مقدار است که لیست شده است با کاما از هم جدا می شوند(به عنوان مثال، پارامتر اول با دو مقدار: i=0، j=2). خود پارامترها لیست شده اند از طریق نقطه ویرگول(;).

  • برای خروجی از هر خط، از تگ استفاده کنید
    :
  • 1 2 3 4 برای (i= 0، j= 2؛ i< 10 , j< 5 ; i++, j++ ) { document.write ("
    i=" , i, "j=" , j) ;)

    برای (i=0، j=2؛ i<10, j<5; i++, j++) { document.write("
    i="، i، "j="،j);)

نسل صفحه "در حال پرواز": چگونه است؟

قبل از انجام کار بعدی، یک مثال را در نظر بگیرید ساخت یک صفحه html به صورت پویابا استفاده از جاوا اسکریپت

مثال 8:

  • نیاز به تولید پویا لیست های گلوله ای و شماره گذاری شده در یک صفحه وب بر اساس ورودی کاربر: از کاربر بخواهید وارد شود نمای لیست(شماره (شماره 1) یا گلوله (شماره 2))، و سپس تعداد آیتم های لیست.
  • بسته به پاسخ، برچسب‌های یک لیست گلوله‌دار یا شماره‌دار را با تعداد مورد نیاز نمایش دهید.
  • اگر یک نوع لیست ناموجود وارد شده است، یک پیام صادر کنید "نوع صحیح را وارد کنید!"و از برنامه خارج شوید ().

بیایید برچسب ها را به خاطر بسپاریم:
برچسب های لیست شماره گذاری شده:

<اول > <li > <li > <li > </ol>

برچسب های لیست گلوله ای:

var listType=prompt("1" را برای لیست گلوله ای، "2" را برای لیست شماره گذاری شده وارد کنید");

  • مقدار وارد شده را بررسی کنید: برای یک لیست شماره دار (شماره 1)، برچسب را چاپ کنید
      ، برای علامت گذاری شده (شماره 2) - برچسب
        . اگر مقدار دیگری وارد شده است، یک یادداشت چاپ کنید و برنامه را پایان دهید:

            ") else ( هشدار ("نوع صحیح را وارد کنید")؛ خروج؛ )

          • مقداردهی اولیه متغیر کلوومقدار وارد شده توسط کاربر در پنجره مدال:
          • var kolvo=prompt("تعداد نقاط را وارد کنید");

          • برای تبدیل یک مقدار رشته به مقدار عددی، از تابع parseInt استفاده کنید:
          • برای (var i=1; i<=kolvo; i++) document.write("");

          • از آنجایی که لیست ها با برچسب های مناسب بسته می شوند، بسته به نوع لیست، تگ های بسته شدن خروجی را تولید کنید:
          • if (listType== "1") document.write("" ) else if (listType== "2" ) document.write ("" ) ;

            if (listType=="1") document.write("

        ") else if (listType=="2") document.write("
      ");

    1. اسکریپت را در مرورگر تست کنید.
    2. Task Js 3_11.
      اسکریپتی بنویسید که برچسب ها را نمایش دهد ورودی(عناصر کنترل) از انواع مختلف، بسته به تعداد وارد شده:

      1 - فیلد متنی,
      2 - دکمه,
      3 - رادیو(تعویض).

      تعداد تگ های نمایش داده شده نیز باید درخواست شود.

      بیایید برچسب ها را به خاطر بسپاریم:

      برای 1 - فیلد متنی: برای 2 - دکمه: برای 3 - رادیو:

      خروجی نمونه:

      Task Js 3_12.با استفاده از جاوا اسکریپت برای حلقه ها یک شطرنجی 9×9 بکشید. "طراحی" تابلو از تگ های html برای جدول پیروی می کند:

      بیایید برچسب ها را به خاطر بسپاریم:

      <table border="1" width="30%"> <tr > <td >-</td> -</td> </tr> </جدول>

      --

      • برای ترسیم 9 خط، باید یک حلقه for بیرونی را با شمارنده i سازماندهی کنید.
      • برای رسم 9 خانه در هر ردیف، باید یک حلقه داخلی (تودرتو) با شمارنده j سازماندهی کنید.
      • برای رسم تگ های سلول و ردیف از روش document.write استفاده کنید.

      نتیجه:

      علاوه بر این:

      1. جدول ضرب را در خانه های جدول با استفاده از شمارنده های حلقه (i و j) نمایش دهید.
      2. سطر اول و ستون اول را با پس زمینه قرمز نمایش دهید (ویژگی سلول جدول bgcolor):
        <tdbgcolor="red">-</td>

        -

      نتیجه:


      سوالاتی برای خودکنترلی:

      1. مفهوم "صفحه سازی پویا" به چه معناست؟
      2. هنگام ساخت صفحه به صورت پویا از چه ساختار زبانی بیشتر استفاده می شود؟

      عبارات حلقه در جاوا اسکریپت - while

      نحو دستور while به صورت زیر است:

      while (شرط) ( //.. بلوک بیانیه.. );

      مثال:نمایش قدرت های دو تا در یک جعبه محاوره ای 1000 (2، 4، 8...512). از متد ()alert استفاده کنید


      ✍ راه حل:
      • فهرست اسکریپت:
      • 1 2 3 4 5 var a = 1 ; در حالی که (الف< 1000 ) { a*= 2 ; alert(a) ; }

        var a = 1; در حالی که (الف< 1000){ a*=2; alert(a); }

        a*=2 ← عملیات انتساب مرکب استفاده می شود: محصول ترکیب شده با انتساب، i.e. همانند a = a*2

      • نتیجه را در مرورگر تست کنید.

      چگونه عبارات break و continue در یک حلقه while کار می کنند؟

      مثال:

      var a = 1 ; در حالی که (الف< 1000 ) { a*= 2 ; if (a== 64 ) continue ; if (a== 256 ) break ; alert(a) ; }

      var a = 1; در حالی که (الف< 1000){ a*=2; if (a==64) continue; if (a==256) break; alert(a); }

      قدرت های دو تا نمایش داده می شود 128 فراگیر، و ارزش 64 نادیده گرفته خواهد شد. آن ها در کادرهای محاوره ای خواهیم دید: 2 4 8 16 32 128

      Task Js 3_13.قطعه کد زیر چه مقادیری را خروجی خواهد کرد؟

      var counter = 5; در حالی که (مشتری< 10) { counter++; document.write("Counter " + counter); break; document.write("Эта строка не выполнится."); }


      Task Js 3_14.کد ساخت و ساز را بنویسید ایکستا یک درجه yبا استفاده از حلقه while مقادیر متغیر را پرس و جو کنید و نتیجه را با alert() نمایش دهید.

      اضافه کردن کد:

      1 2 3 4 5 6 7 8 9 var x = ...; متغیر = ...; شمارنده = 1 ; عدد = x; در حالی که (...) ( chislo= x* ...; counter= ...; ) alert(chislo) ;

      var x = ...; متغیر = ...; شمارنده = 1; عدد=x; در حالی که (...)( chislo=x*...; counter=...; ) alert(chislo);

      A رفع خطا در برنامه طراحی شده برای یافتن فاکتوریل یک عدد:

      1 2 3 4 5 6 7 8 9 10 11 12 13 var counter = prompt("عدد را وارد کنید" ); var factorial = 1 ; document.write( "فاکتوریل یک عدد:"+ شمارنده + "!= " ); do (اگر (counter == 0) (factorial = 1 ; break ; ) factorial = factorial / counter; counter = counter + 1 ; ) while (counter > 0 ) ; document.write (factorial) ;

      var counter = prompt("عدد را وارد کنید"); var factorial = 1; document.write("فاکتوریل یک عدد: " + شمارنده + "! = "); do ( if (counter == 0) (factorial = 1; break; ) factorial = factorial / counter; counter = counter + 1; ) while (counter > 0); document.write(factorial);


      Task Js 3_16.برنامه را برای ورودی کاربر تغییر دهید:

      یک نام کاربری را درخواست کنید تا زمانی که کاربر واقعاً یک نام کاربری را وارد کند (یعنی فیلد در واقع پر شود و کلید لغو فشار داده نشود). هنگامی که نام وارد شد، سپس خروجی "سلام نام!". سند

      چگونه خطاهای جاوا اسکریپت را پیدا کنیم؟

      در برخی موارد، کد موجود در صفحه به دلایل نامعلومی کار نمی کند. کجا به دنبال خطا بگردیم؟ در چنین مواردی می توانید از عبارت try..catch استفاده کنید.

      دستور try..catch سعی می کند یک کد را اجرا کند و در صورت وجود خطا در کد، امکان نمایش خطا روی صفحه وجود دارد.
      خطا در شی e.message ذخیره می شود.

      عملکرد اپراتور را در یک مثال در نظر بگیرید:

      مثال:یک عملگر با خطا در برنامه بنویسید. خطای کد فرضی اشتباه را بررسی کنید: در صورت وجود خطا در کد، یک پیام ارسال کنید. "کنترل خطا: نام خطا". پس از بررسی عبارت اشتباه، صرف نظر از وجود خطا در کد، پیامی صادر کنید " مراحل پایانی "


      ✍ راه حل:
      • به عنوان یک پیام خطا، از متد prompt() استفاده می کنیم که با یک خطا نوشته شده است - promt(). پیام خطا را در یک بلوک امتحان قرار دهید:
      • هشدار ("قبل"); try (promt("شماره را وارد کنید"); // عبارت با خطا)

        از انگلیسی امتحان کنید - "try"، بنابراین، عبارت try را قبل از قطعه کدی که ممکن است حاوی خطا باشد قرار می دهیم (در مورد ما واقعاً یک خطا وجود دارد).

      • پیام خطا باید در یک بلوک catch قرار گیرد:
      • 6 7 8 9 گرفتن (ه) (هشدار( "کنترل خطا:"+e.message)؛ )

        catch(e) ( هشدار("error handling: "+e.message)؛ )

        اگر واقعاً خطایی وجود داشته باشد، دستور catch (از انگلیسی "to catch") این خطا را در شی e ذخیره می کند. در آینده، می توان آن را در یک کادر محاوره ای نمایش داد - e.message .

      • پیام نهایی را که می خواهید نمایش دهید بدون در نظر گرفتن اینکه آیا کد خطا وجود دارد یا نه، آن را در یک بلوک نهایی قرار دهید:
      • سرانجام ( alert("تمام اقدامات"); ) alert("after");

        اگر همچنان خطایی وجود داشته باشد، مفسر، پس از خروجی آن در مثال ما، به اجرای بلوک catch و سپس در نهایت (از انگلیسی "completion"، "finally")، که همیشه اجرا خواهد شد، صرف نظر از اینکه خطایی وجود داشته یا نه حتی اگر در بلوک catch خطایی وجود داشته باشد.

      مهم:بلوک نهایی در ساختار اختیاری است.


      Task Js 3_17.مثال بالا را با تغییرات زیر اجرا کنید:

    3. بلوک نهایی را بردارید و اجرای کد را تماشا کنید.
    4. اپراتور خطا را با یک عملگر بدون خطا جایگزین کنید و ببینید نتیجه چه خواهد شد.
    5. خلاصه:

      این درس عملگرها و ساختارهای زبان جاوا اسکریپت زیر را پوشش می‌دهد:

      عبارات شرطی جاوا اسکریپت:

    6. اگر بیانیه
    7. انتساب شرطی (اپراتور سه تایی)
    8. عبارت switch
    9. عبارات حلقه:

    10. برای حلقه
    11. حلقه while
    12. انجام ... در حالی که حلقه
    13. برای ... در حلقه
    14. وظیفه نهایی Js 3_18.
      یک بازی برای دو نفر بسازید:

      1. برنامه از اولین بازیکن می خواهد که شماره ای را وارد کند 1 قبل از 100 (بازیکن دوم شماره وارد شده را نمی بیند). سپس از بازیکن دوم خواسته می شود تا عدد وارد شده را حدس بزند. پاسخ یک پیام است "تعداد کمی"یا "بسیاری از"بسته به پاسخ وارد شده اگر بازیکن درست حدس بزند، تبریک نمایش داده می شود. اگر او حدس نزند، بازی ادامه می یابد (تا زمانی که عدد واقعی حدس زده شود).
      2. تعداد تلاش ها را محاسبه کنید و زمانی که عدد حدس زده شد، نتیجه را برگردانید.


      سوالاتی برای خودکنترلی:

      1. چه زمانی استفاده از حلقه For In مناسب است؟ مثالی از کاربرد آن بزنید.
      2. هدف از عبارت try..catch چیست؟
      3. هدف هر بلوک عبارت try..catch را توضیح دهید.

      منبع این مثال تعاملی در یک مخزن GitHub ذخیره می شود. اگر می‌خواهید در پروژه نمونه‌های تعاملی مشارکت کنید، لطفاً https://github.com/mdn/interactive-examples را شبیه‌سازی کنید و یک درخواست جذب برای ما ارسال کنید.

      نحو

      if (condition) statement1 condition عبارتی که صدق یا نادرست در نظر گرفته می شود. بیانیه 1 بیانیه ای که در صورت صدق بودن شرط اجرا می شود. می تواند هر دستوری باشد، از جمله دستورات if تو در تو. برای اجرای چند دستور، از یک دستور بلوک ((...)) برای گروه بندی آن عبارات استفاده کنید. برای اجرای هیچ دستوری، از یک دستور خالی استفاده کنید. بیانیه2 بیانیه ای که در صورت false بودن شرط و وجود عبارت else اجرا می شود. می تواند هر دستوری باشد، از جمله دستورات بلوک و دستورات if تودرتو.

      شرح

      چند عبارت if...else را می توان برای ایجاد عبارت if دیگری تودرتو کرد. توجه داشته باشید که هیچ کلمه کلیدی elseif (در یک کلمه) در جاوا اسکریپت وجود ندارد.

      If (شرط 1) عبارت 1 else if (شرط 2) گزاره 2 else if (شرط3) عبارت3 ... else دستورN

      برای دیدن این که چگونه این کار می کند، اگر لانه به درستی تورفتگی داشته باشد، اینگونه به نظر می رسد:

      If (شرط 1) عبارت 1 else if (شرط 2) گزاره2 other if (شرط3) ...

      برای اجرای چند دستور درون یک بند، از یک دستور بلوک ((...)) برای گروه بندی آن عبارات استفاده کنید. به طور کلی، استفاده از دستورات بلوک، به ویژه در کدهایی که شامل دستورات if تو در تو می شود، تمرین خوبی است:

      اگر (شرط) (گزاره‌های 1) else (گزاره‌های2)

      مقادیر بدوی بولی درست و نادرست را با درستی یا نادرستی شی بولی اشتباه نگیرید. هر مقداری که نادرست، تعریف نشده، تهی، 0، -0، NaN، یا رشته خالی ("") نباشد، و هر شیئی، از جمله یک شی بولی که مقدار آن نادرست است، در صورت استفاده به عنوان شرط، درست در نظر گرفته می شود. مثلا:

      Varb = جدید بولی (نادرست)؛ اگر (ب) // این شرط صادق باشد

      مثال ها

      با استفاده از if...else

      if (cipher_char === from_char) (نتیجه = نتیجه + to_char؛ x++; ) other (نتیجه = نتیجه + clear_char؛ )

      استفاده از other if

      توجه داشته باشید که سینتکس if دیگری در جاوا اسکریپت وجود ندارد. با این حال، می توانید آن را با فاصله بین else و if بنویسید:

      اگر (x > 50) ( /* کار درست را انجام دهید */ ) در غیر این صورت (x > 5) ( /* کار درست را انجام دهید */ ) دیگری ( /* کار درست را انجام دهید */ )

      انتساب در عبارت شرطی

      توصیه می شود از تخصیص های ساده در یک عبارت شرطی استفاده نکنید، زیرا هنگام نگاه کردن به کد، انتساب ممکن است با برابری اشتباه گرفته شود. برای مثال از کد زیر استفاده نکنید:

      اگر (x = y) ( /* کار درست را انجام دهید */ )

      اگر نیاز به استفاده از یک تکلیف در یک عبارت شرطی دارید، یک روش معمول این است که پرانتزهای اضافی را در اطراف تکلیف قرار دهید. مثلا:

      اگر ((x = y)) ( /* کار درست را انجام دهید */ )

      مشخصات فنی

      مشخصات وضعیت اظهار نظر
      آخرین پیش نویس ECMAScript (ECMA-262)
      پیش نویس
      ECMAScript 2015 (نسخه ششم، ECMA-262)
      تعریف «عبارت اگر» در آن مشخصات.
      استاندارد
      ECMAScript 5.1 (ECMA-262)
      تعریف «عبارت اگر» در آن مشخصات.
      استاندارد
      ECMAScript نسخه سوم (ECMA-262)
      تعریف «عبارت اگر» در آن مشخصات.
      استاندارد
      ECMAScript نسخه اول (ECMA-262)
      تعریف «عبارت اگر» در آن مشخصات.
      استاندارد تعریف اولیه

      سازگاری با مرورگر

      جدول سازگاری در این صفحه از داده های ساخت یافته تولید می شود. اگر می‌خواهید در داده‌ها مشارکت کنید، لطفاً https://github.com/mdn/browser-compat-data را بررسی کنید و یک درخواست برای ما ارسال کنید.

      داده های سازگاری را در GitHub به روز کنید

      دسکتاپسیارسرور
      کرومحاشیه، غیرمتمرکزفایرفاکساینترنت اکسپلورراپراسافارینمای وب اندرویدکروم برای اندرویدفایرفاکس برای آندرویداپرا برای اندرویدسافاری در iOSاینترنت سامسونگNode.js
      اگر دیگریپشتیبانی کامل کروم 1پشتیبانی کامل Edge 12پشتیبانی کامل فایرفاکس 1پشتیبانی کامل IE 3پشتیبانی کامل اپرا بلهسافاری پشتیبانی کامل بلهWebView Android پشتیبانی کامل 1Chrome Android پشتیبانی کامل 18فایرفاکس اندروید پشتیبانی کامل 4اپرا اندروید پشتیبانی کامل بلهسافاری iOS پشتیبانی کامل بلهسامسونگ اینترنت اندروید پشتیبانی کامل 1.0nodejs پشتیبانی کامل بله

      اظهارات مشروط

      دستورات شرطی به شما این امکان را می دهند که بسته به مقدار عبارت مشخص شده، دستورات دیگر را رد یا اجرا کنید. این عبارات نقاط تصمیم گیری در برنامه هستند و گاهی اوقات به آنها نیز اشاره می شود اپراتورهای شعبه.

      اگر تصور کنید که برنامه یک جاده است و مفسر جاوا اسکریپت مسافری است که در طول آن راه می‌رود، می‌توان عبارات شرطی را به عنوان تقاطع‌هایی در نظر گرفت که کد برنامه به دو یا چند جاده تقسیم می‌شود و در چنین تقاطع‌هایی مترجم باید انتخاب کند که کدام یک جاده برای حرکت .

      بیانیه if/else

      دستور if یک دستور کنترلی پایه است که به مفسر جاوا اسکریپت اجازه می دهد بسته به شرایط تصمیم بگیرد یا به طور خاص دستورات را اجرا کند. دستور if دو شکل دارد. اولین:

      اگر (بیان) بیانیه

      در این فرم ابتدا عبارت مورد ارزیابی قرار می گیرد. اگر نتیجه درست باشد، دستور اجرا می شود. اگر عبارت به false ارزیابی شود، دستور اجرا نمی شود. مثلا:

      If (username == null) // اگر نام کاربری null یا undefined username = "Alex"; // آن را تعریف کنید

      توجه داشته باشید که پرانتزهای اطراف عبارت شرطی جزء ضروری دستور if هستند.

      شکل دوم دستور if یک ساختار else را معرفی می کند که زمانی اجرا می شود که عبارت به false ارزیابی شود. نحو آن این است:

      if (expression) statement1 else statement2

      این فرم در صورتی که عبارت به درستی ارزیابی شود دستور 1 و اگر عبارت به غلط ارزیابی شود، statement2 را اجرا می کند. مثلا:

      If (n == 1) console.log("1 پیام جدید دریافت کرد."); else console.log("دریافت " + n + " پیام های جدید.");

      other if بیانیه

      دستور if/else مقدار یک عبارت را ارزیابی می کند و بسته به نتیجه، یک یا کد دیگر را اجرا می کند. اما اگر بخواهید یکی از چندین قطعه را اجرا کنید چه؟ یک راه ممکن برای انجام این کار استفاده از عبارت else if است. از نظر فنی یک عبارت جاوا اسکریپت مستقل نیست. این فقط یک سبک معمول برنامه نویسی است که از یک عبارت if/else مکرر استفاده می کند:

      If (n == 1) ( // اجرای بلوک 1 ) else if (n == 2) ( // اجرای بلوک 2 ) other if (n == 3) ( // اجرای بلوک 3 ) other ( // اگر هیچ کدام یکی از دستورات else قبلی اجرا نشد، بلوک 4 را اجرا کنید)

      هیچ چیز خاصی در مورد این قطعه وجود ندارد. این فقط دنباله ای از دستورات if است، که در آن هر دستور if بخشی از ساختار else دستور قبلی است.

      عبارت switch

      دستور if یک شاخه در جریان اجرای برنامه ایجاد می کند و انشعاب چند موقعیتی را می توان با چندین دستور if دیگر انجام داد. با این حال، این همیشه بهترین راه حل نیست، به خصوص اگر همه شاخه ها به مقدار یک عبارت وابسته باشند. در این مورد، ارزیابی مجدد ارزش همان عبارت در چند دستور if، بیهوده است.

      دستور switch دقیقاً برای چنین موقعیت هایی طراحی شده است. کلمه کلیدی switch با یک عبارت در پرانتز و یک بلوک از کد در پرانتزهای مجعد دنبال می شود:

      سوئیچ (بیان) (عبارات)

      با این حال، نحو کامل دستور switch پیچیده تر از آنچه در اینجا نشان داده شده است. مکان های مختلف بلوک با کلمه کلیدی مشخص شده اند موردبه دنبال آن یک عبارت و یک کاراکتر دو نقطه.

      هنگامی که یک دستور switch اجرا می شود، مقدار عبارت را ارزیابی می کند و سپس به دنبال برچسب موردی می گردد که با آن مقدار مطابقت دارد (تطابق با استفاده از عملگر هویت === تعیین می شود). اگر برچسب پیدا شود، بلوک کد با اولین عبارت بعد از برچسب case اجرا می شود. اگر هیچ برچسب حروفی با مقدار منطبق یافت نشد، اجرا با اولین عبارت بعد از برچسب ویژه شروع می شود پیش فرض:. اگر برچسب پیش فرض: وجود نداشته باشد، کل بلوک دستور switch نادیده گرفته می شود.

      توضیح کار دستور switch با کلمات دشوار است، توضیح با یک مثال بسیار واضح تر به نظر می رسد. دستور switch زیر معادل دستورهای تکراری if/else است که در مثال قبلی نشان داده شده است:

      سوئیچ(n) ( مورد 1: // اگر n === 1 اجرا شود // شکست بلوک 1 را اجرا کنید؛ // در اینجا توقف کنید مورد 2: // اگر n === 2 اجرا شود // شکست بلوک 2 را اجرا کنید؛ // توقف کنید در اینجا مورد 3: // اگر n === 3 اجرا شود // شکست بلوک 3 را اجرا کنید؛ // در اینجا به طور پیش فرض توقف کنید: // اگر همه چیز شکست خورد... // شکست بلوک 4 را اجرا کنید؛ // در اینجا توقف کنید)

      به کلمه کلیدی توجه کنید زنگ تفريحدر پایان هر بلوک مورد. دستور break باعث می شود که کنترل به انتهای دستور switch منتقل شود و اجرای دستورات زیر ادامه یابد. ساختار case در دستور switch فقط نقطه شروع کدی را که باید اجرا شود مشخص می کند، اما هیچ نقطه پایانی را مشخص نمی کند.

      اگر دستور break وجود نداشته باشد، دستور switch شروع به اجرای بلوک کد با برچسب case مربوط به مقدار عبارت می کند و اجرای دستورات را تا رسیدن به انتهای بلوک ادامه می دهد. در موارد نادر، این برای نوشتن کدی مفید است که از یک Case Label به Label دیگر می‌پرد، اما در 99% موارد، باید با دقت هر بلوک case را با دستور break پایان دهید. (هنگامی که از یک سوئیچ در یک تابع استفاده می کنید، می توانید به جای break از دستور return استفاده کنید. هر دوی این دستورات دستور switch را پایان می دهند و از پرش آن به برچسب مورد بعدی جلوگیری می کنند.)

      مثال زیر یک مثال کاربردی تر از استفاده از دستور switch است که یک مقدار را به رشته ای تبدیل می کند که بستگی به نوع مقدار دارد:

      تابع تبدیل(x) ( سوئیچ (نوع x) ( // تبدیل یک عدد به یک عدد صحیح هگزا دسیمال "number": return x.toString(16)؛ // برگرداندن یک رشته نقل قول "string": برگرداندن """ + x + """؛ // هر نوع دیگری به روش پیش فرض عادی تبدیل می شود: return x.toString(); ) ) console.log(convert(1067)); // نتیجه "42b"

      توجه داشته باشید که در دو مثال قبلی، کلمات کلیدی case با اعداد یا حروف رشته ای دنبال می شدند. به این صورت است که دستور switch اغلب در عمل استفاده می شود، اما استاندارد ECMAScript به شما اجازه می دهد عبارات دلخواه را بعد از case مشخص کنید.

      دستور switch ابتدا عبارت را بعد از کلیدواژه switch ارزیابی می کند و سپس عبارات case را به ترتیبی که مشخص شده اند ارزیابی می کند تا زمانی که یک مقدار منطبق پیدا شود. واقعیت یک تطابق با استفاده از عملگر هویت === تعیین می شود، نه عملگر برابری ==، بنابراین عبارات باید بدون هیچ گونه تبدیل نوع مطابقت داشته باشند.

      از آنجایی که همه عبارات case هر بار که دستور switch اجرا می شود ارزیابی نمی شوند، باید از استفاده از عبارات case که دارای عوارض جانبی هستند، مانند فراخوانی تابع و تخصیص، اجتناب کنید. ایمن ترین کار این است که عبارات موردی خود را به عبارات ثابت محدود کنید.

      همانطور که قبلا توضیح داده شد، اگر هیچ یک از دستورات case با دستور switch مطابقت نداشته باشد، دستور switch شروع به اجرای دستور با عنوان default: می کند. اگر برچسب پیش‌فرض وجود نداشته باشد، متن دستور switch به طور کامل نادیده گرفته می‌شود. توجه داشته باشید که در مثال‌های قبلی، برچسب پیش‌فرض: در انتهای متن دستور switch، بعد از تمام برچسب‌های case مشخص می‌شود. این مکان منطقی و معمولی برای آن است، اما در واقع می توان آن را در هر جایی از دستور switch قرار داد.