حلقه های جاوا اسکریپت – جامعه dev

حلقه ها یک مفهوم اساسی در JavaScript (JS) هستند که به شما امکان می دهد چندین بار بلوک کد را اجرا کنید. در اینجا انواع اصلی حلقه ها در JavaScript آورده شده است:
-
برای حلقه: این حلقه زمانی استفاده می شود که از قبل می دانید چند بار می خواهید یک بیانیه یا یک بلوک اظهارات را اجرا کنید.
-
در حالی که حلقه: این حلقه تا زمانی که شرایط مشخص شده صحیح باشد ، به اجرای خود ادامه می دهد.
-
انجام … در حالی که حلقه: این حلقه شبیه به حلقه در حالی است که قبل از بررسی صحیح بودن شرط ، بلوک کد را یک بار اجرا می کند ، تا زمانی که شرط صحیح باشد ، حلقه را تکرار می کند.
-
برای … در حلقه: از این حلقه برای تکرار بیش از خصوصیات یک شی استفاده می شود.
-
برای … از حلقه: از این حلقه برای تکرار بیش از اشیاء قابل تکرار (مانند آرایه ها ، رشته ها و غیره) استفاده می شود.
1. برای حلقه
در for
Loop in JavaScript یک بیانیه جریان کنترل است که به شما امکان می دهد تعداد مشخصی از دفعات را یک بلوک از کد اجرا کنید. در اینجا نحو اساسی وجود دارد:
for (initialization; condition; increment) {
// code to be executed
}
در اینجا تجزیه و تحلیل هر قسمت وجود دارد:
- شروع: این یک بار قبل از شروع حلقه اجرا می شود. معمولاً برای اولیه سازی یک متغیر پیشخوان استفاده می شود.
-
وضعیت: این قبل از هر تکرار ارزیابی می شود. اگر باشد
true
، حلقه ادامه دارد. اگر باشدfalse
، حلقه متوقف می شود. - افزایش: این بعد از هر تکرار اجرا می شود. این معمولاً برای به روزرسانی متغیر پیشخوان استفاده می شود.
در اینجا مثالی وجود دارد که اعداد را از 0 تا 4 چاپ می کند:
for (let i = 0; i < 5; i++) {
console.log(i);
}
در این مثال:
-
let i = 0
متغیر پیشخوان را آغاز می کندi
به 0 -
i < 5
شرایطی است که حلقه را تا زمانی که در حال اجرا باشدi
کمتر از 5 است -
i++
متغیر پیشخوان را افزایش می دهدi
توسط 1 بعد از هر تکرار.
در اینجا برخی از اشتباهات رایج مردم هنگام استفاده آورده شده است for
حلقه ها در جاوا اسکریپت:
-
خطاهای خارج از یک: این اتفاق می افتد که حلقه یک بار بیش از حد زیاد یا یک بار خیلی کمی اجرا شود. به عنوان مثال ، استفاده از
<=
به جای<
در شرایط
for (let i = 0; i <= 5; i++) { // This will run 6 times instead of 5
console.log(i);
}
-
حلقه های نامتناهی: این اتفاق می افتد که وضعیت حلقه هرگز نمی شود
false
بشر اگر مرحله افزایش/کاهش وجود داشته باشد یا نادرست باشد ، این می تواند اتفاق بیفتد.
for (let i = 0; i < 5; ) { // Missing increment step
console.log(i);
}
- اولیه سازی نادرست: فراموش کردن اولیه متغیر حلقه یا اولیه کردن نادرست آن.
for (i = 0; i < 5; i++) { // If 'i' is not declared with 'let' or 'var', it can cause issues
console.log(i);
}
- تغییر متغیر حلقه در داخل حلقه: تغییر متغیر حلقه در داخل حلقه می تواند به رفتار غیر منتظره منجر شود.
for (let i = 0; i < 5; i++) {
console.log(i);
i += 2; // Modifying the loop variable inside the loop
}
-
دامنه نادرست متغیرها: استفاده از متغیرهای داخل حلقه که به درستی پیچیده نشده اند می تواند باعث ایجاد مشکلات شود ، به خصوص اگر با آنها اعلام شود
var
به جایlet
بشر
for (var i = 0; i < 5; i++) {
// 'i' is function-scoped, which can cause issues in larger code blocks
}
-
استفاده نکردن
let
برای متغیرهای حلقه: با استفاده ازvar
به جایlet
به دلیل تفاوت در Scoping می تواند به رفتار غیر منتظره منجر شود.
for (var i = 0; i < 5; i++) {
setTimeout(() => console.log(i), 1000); // This will print '5' five times
}
2 در حالی که حلقه است
بوها while
حلقه در JavaScript به شما امکان می دهد تا زمانی که یک شرط مشخص صحیح باشد ، یک بلوک کد را اجرا کنید. در اینجا نحو اساسی وجود دارد:
while (condition) {
// code to be executed
}
در اینجا تفکیک نحوه عملکرد آن آورده شده است:
-
وضعیت: این قبل از هر تکرار ارزیابی می شود. اگر باشد
true
، حلقه ادامه دارد. اگر باشدfalse
، حلقه متوقف می شود.
در اینجا مثالی وجود دارد که اعداد را از 0 تا 4 چاپ می کند:
let i = 0;
while (i < 5) {
console.log(i);
i++;
}
در این مثال:
-
let i = 0
متغیر پیشخوان را آغاز می کندi
به 0 -
i < 5
شرایطی است که حلقه را تا زمانی که در حال اجرا باشدi
کمتر از 5 است -
i++
متغیر پیشخوان را افزایش می دهدi
توسط 1 بعد از هر تکرار.
اشتباهات رایج با while
حلقه
-
حلقه های نامتناهی: این اتفاق می افتد وقتی که شرط هرگز نمی شود
false
بشر اطمینان حاصل کنید که حلقه راهی برای خاتمه دارد.
let i = 0;
while (i < 5) {
console.log(i);
// Missing increment step, causing an infinite loop
}
- وضعیت نادرست: اگر شرط نادرست باشد ، ممکن است حلقه همانطور که انتظار می رفت اجرا نشود.
let i = 0;
while (i > 5) { // This condition is false from the start, so the loop won't run
console.log(i);
i++;
}
- تغییر نادرست متغیر شرایط: اطمینان حاصل کنید که متغیر مورد استفاده در شرط به درستی در حلقه اصلاح شده است.
let i = 0;
while (i < 5) {
console.log(i);
i += 2; // This will skip some iterations
}
3. برای … در حلقه
در for...in
حلقه در JavaScript برای تکرار بیش از خواص یک شی استفاده می شود. این امکان را به شما می دهد تا به هر کلید در شیء یکی یکی دسترسی پیدا کنید. در اینجا نحو اساسی وجود دارد:
for (let key in object) {
// code to be executed
}
در اینجا مثالی آورده شده است که نحوه استفاده از آن را نشان می دهد for...in
حلقه:
const person = {
name: "John",
age: 30,
city: "New York"
};
for (let key in person) {
console.log(key + ": " + person[key]);
}
در این مثال:
-
person
یک شی با خواص استname
باage
وتcity
بشر - در
for...in
تکرار بیش از هر خاصیت درperson
شیء. -
key
نام ملک فعلی را در هر تکرار نشان می دهد. -
person[key]
به ارزش خاصیت فعلی دسترسی پیدا می کند.
اشتباهات رایج با for...in
حلقه
-
تکرار بیش از آرایه ها: در حالی که می توانید استفاده کنید
for...in
برای تکرار آرایه ها ، به طور کلی توصیه نمی شود زیرا بیش از همه خصوصیات قابل توجه ، از جمله موارد ارثی تکرار می شود. استفاده کردنfor...of
یا یک استانداردfor
حلقه برای آرایه ها.
const array = [1, 2, 3, 4, 5];
for (let index in array) {
console.log(index); // This will print the indices, not the values
}
-
خواص غیر منتظره: اگر شیء خواص را به ارث برده است ،
for...in
بر روی آنها نیز تکرار خواهد شد. استفاده کردنhasOwnProperty
برای فیلتر کردن خواص ارثی.
const obj = {a: 1, b: 2};
Object.prototype.c = 3; // Adding an inherited property
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(key + ": " + obj[key]);
}
}
-
مسائل مربوط به عملکرد:
for...in
می تواند نسبت به سایر حلقه ها کندتر باشد زیرا بیش از همه خصوصیات قابل توجه ، از جمله موارد اضافه شده به زنجیره نمونه اولیه ، تکرار می شود.
4. برای … از حلقه
در for...of
Loop in JavaScript برای تکرار اشیاء قابل تکرار مانند آرایه ها ، رشته ها ، نقشه ها ، مجموعه ها و موارد دیگر استفاده می شود. این امکان را به شما می دهد تا به هر عنصر در یک تکرار دسترسی پیدا کنید. در اینجا نحو اساسی وجود دارد:
for (let element of iterable) {
// code to be executed
}
در اینجا مثالی آورده شده است که نحوه استفاده از آن را نشان می دهد for...of
حلقه با یک آرایه:
const array = [1, 2, 3, 4, 5];
for (let value of array) {
console.log(value);
}
در این مثال:
-
array
آرایه ای با عناصر است1, 2, 3, 4, 5
بشر - در
for...of
تکرار بیش از هر عنصر درarray
بشر -
value
عنصر فعلی را در هر تکرار نشان می دهد.
با استفاده از for...of
با سایر موارد تکرار شده
- رشته: می توانید بیش از هر شخصیت در یک رشته تکرار کنید.
const str = "hello";
for (let char of str) {
console.log(char);
}
- نقشه: می توانید بیش از ورودی های یک نقشه تکرار کنید.
const map = new Map([
['a', 1],
['b', 2],
['c', 3]
]);
for (let [key, value] of map) {
console.log(key + ": " + value);
}
- مجموعه: می توانید بیش از عناصر یک مجموعه تکرار کنید.
const set = new Set([1, 2, 3, 4, 5]);
for (let value of set) {
console.log(value);
}
اشتباهات رایج با for...of
حلقه
-
با استفاده از
for...of
با اشیاء غیر قابل قبول:for...of
فقط با اشیاء قابل تکرار قابل استفاده است. تلاش برای استفاده از آن با اشیاء غیر قابل قبول منجر به خطا خواهد شد.
const obj = {a: 1, b: 2};
for (let value of obj) { // This will throw an error
console.log(value);
}
-
گیج کننده
for...of
باfor...in
: به یاد داشته باشید کهfor...of
برای تکرار بیش از مقادیر است ، در حالی کهfor...in
برای تکرار بیش از کلیدها یا نام املاک است.
const array = [1, 2, 3];
for (let index in array) {
console.log(index); // This will print the indices (0, 1, 2)
}
for (let value of array) {
console.log(value); // This will print the values (1, 2, 3)
}
5. انجام … در حالی که حلقه
در do...while
حلقه در جاوا اسکریپت شبیه به while
حلقه ، اما با یک تفاوت کلیدی: do...while
حلقه حداقل یک بار قبل از بررسی شرایط ، بلوک کد را اجرا می کند. در اینجا نحو اساسی وجود دارد:
do {
// code to be executed
} while (condition);
در اینجا مثالی آورده شده است که نحوه استفاده از آن را نشان می دهد do...while
حلقه:
let i = 0;
do {
console.log(i);
i++;
} while (i < 5);
در این مثال:
-
let i = 0
متغیر پیشخوان را آغاز می کندi
به 0 - بلوک کد در داخل
do
بخش قبل از بررسی شرایط یک بار اجرا می شود. -
i++
متغیر پیشخوان را افزایش می دهدi
توسط 1 بعد از هر تکرار. -
i < 5
شرایطی است که حلقه را تا زمانی که در حال اجرا باشدi
کمتر از 5 است
اشتباهات رایج با do...while
حلقه
-
حلقه های نامتناهی: این اتفاق می افتد وقتی که شرط هرگز نمی شود
false
بشر اطمینان حاصل کنید که حلقه راهی برای خاتمه دارد.
let i = 0;
do {
console.log(i);
// Missing increment step, causing an infinite loop
} while (i < 5);
- وضعیت نادرست: اگر شرط نادرست باشد ، ممکن است حلقه همانطور که انتظار می رفت اجرا نشود.
let i = 0;
do {
console.log(i);
i++;
} while (i > 5); // This condition is false from the start, so the loop will only run once
- تغییر نادرست متغیر شرایط: اطمینان حاصل کنید که متغیر مورد استفاده در شرط به درستی در حلقه اصلاح شده است.
let i = 0;
do {
console.log(i);
i += 2; // This will skip some iterations
} while (i < 5);
6. بیانیه را ادامه دهید
در continue
از بیانیه در JavaScript برای پرش از تکرار فعلی یک حلقه استفاده شده و به تکرار بعدی ادامه می یابد. اغلب در داخل استفاده می شود for
با while
وت do...while
حلقه ها برای کنترل جریان حلقه بر اساس شرایط خاص.
در اینجا یک مثال با استفاده از a وجود دارد for
حلقه:
for (let i = 0; i < 5; i++) {
if (i === 2) {
continue; // Skip the iteration when i is 2
}
console.log(i);
}
در این مثال:
- حلقه از
i = 0
بهi < 5
بشر - کی
i
برابر است با2
،continue
بیانیه اجرا می شود ، که بقیه کد را در داخل حلقه برای آن تکرار می کند. - در
console.log(i)
بیانیه هنگامی اجرا نمی شودi
است ،2
، بنابراین خروجی خواهد بود0, 1, 3, 4
بشر
با استفاده از continue
در حلقه های دیگر
- در حالی که حلقه:
let i = 0;
while (i < 5) {
i++;
if (i === 2) {
continue; // Skip the iteration when i is 2
}
console.log(i);
}
- انجام … در حالی که حلقه:
let i = 0;
do {
i++;
if (i === 2) {
continue; // Skip the iteration when i is 2
}
console.log(i);
} while (i < 5);
اشتباهات رایج با continue
بیانیه
-
پرش از کد مهم: اطمینان حاصل کنید که
continue
بیانیه کد اساسی را که باید در هر تکرار اجرا شود ، پرش نمی کند.
for (let i = 0; i < 5; i++) {
if (i === 2) {
continue;
}
// Important code that should not be skipped
console.log("Important code for i = " + i);
}
-
با استفاده از
continue
خارج از حلقه ها:continue
عبارت فقط در داخل حلقه ها قابل استفاده است. استفاده از آن در خارج از یک حلقه منجر به خطای نحوی خواهد شد.
7. بیانیه شکستن
در break
بیانیه در JavaScript برای خروج از یک حلقه یا عبارت سوئیچ زودرس استفاده می شود. وقتی break
بیانیه اجرا می شود ، بیانیه حلقه یا سوئیچ بلافاصله خاتمه می یابد و برنامه با بیانیه بعدی به دنبال حلقه یا سوئیچ ادامه می یابد.
با استفاده از break
در حلقه ها
- برای حلقه:
for (let i = 0; i < 5; i++) {
if (i === 2) {
break; // Exit the loop when i is 2
}
console.log(i);
}
// Output: 0, 1
- در حالی که حلقه:
let i = 0;
while (i < 5) {
if (i === 2) {
break; // Exit the loop when i is 2
}
console.log(i);
i++;
}
// Output: 0, 1
- انجام … در حالی که حلقه:
let i = 0;
do {
if (i === 2) {
break; // Exit the loop when i is 2
}
console.log(i);
i++;
} while (i < 5);
// Output: 0, 1
با استفاده از break
در اظهارات سوئیچ
در break
بیانیه نیز معمولاً در آن استفاده می شود switch
اظهارات برای خاتمه یک پرونده و جلوگیری از سقوط اعدام به موارد بعدی.
const fruit = "apple";
switch (fruit) {
case "apple":
console.log("This is an apple.");
break; // Exit the switch statement
case "banana":
console.log("This is a banana.");
break;
default:
console.log("Unknown fruit.");
}
در این مثال:
- وقتی
fruit
است ،"apple"
، پیام “این یک سیب است”. چاپ شده است ، وbreak
بیانیه ازswitch
بیانیه - بدون
break
بیانیه ، کد به اجرای پرونده بعدی ادامه می دهد ، که معمولاً رفتار مورد نظر نیست.
اشتباهات رایج با break
بیانیه
-
با استفاده از
break
خارج از حلقه ها یا اظهارات سوئیچ:break
عبارت فقط می تواند در داخل حلقه ها یا بیانیه های سوئیچ استفاده شود. استفاده از آن در خارج از این زمینه ها منجر به خطای نحوی خواهد شد. -
فراموش کردن استفاده
break
در اظهارات سوئیچ: حذفbreak
بیانیه در یک مورد سوئیچ می تواند منجر به رفتار ناخواسته سقوط شود ، که در آن موارد متعدد اجرا می شود.
هنگام استفاده از break
بیانیه در حلقه های تو در تو ، فقط از حلقه درونی که در آن نامیده می شود خارج می شود. حلقه های بیرونی طبق معمول به اجرای خود ادامه می دهند. در اینجا مثالی برای نشان دادن این موضوع آورده شده است:
for (let i = 0; i < 3; i++) {
console.log("Outer loop:", i);
for (let j = 0; j < 3; j++) {
if (j === 1) {
break; // Exit the inner loop when j is 1
}
console.log(" Inner loop:", j);
}
}
در این مثال:
- حلقه بیرونی از
i = 0
بهi < 3
بشر - حلقه داخلی از
j = 0
بهj < 3
بشر - کی
j
برابر است با1
،break
بیانیه از حلقه داخلی خارج می شود ، اما حلقه بیرونی به تکرار بعدی ادامه می یابد.
خروجی خواهد بود:
Outer loop: 0
Inner loop: 0
Outer loop: 1
Inner loop: 0
Outer loop: 2
Inner loop: 0
بیرون کشیدن از چندین حلقه
اگر نیاز به خارج شدن از چندین حلقه تو در تو دارید ، می توانید از برچسب ها استفاده کنید. در اینجا یک مثال آورده شده است:
outerLoop: for (let i = 0; i < 3; i++) {
console.log("Outer loop:", i);
for (let j = 0; j < 3; j++) {
if (j === 1) {
break outerLoop; // Exit both the inner and outer loops
}
console.log(" Inner loop:", j);
}
}
در این مثال:
- در
outerLoop
برای شناسایی حلقه بیرونی از برچسب استفاده می شود. - در
break outerLoop
بیانیه از هر دو حلقه داخلی و بیرونی خارج می شودj
برابر است با1
بشر
خروجی خواهد بود:
Outer loop: 0
Inner loop: 0