English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي لـ JavaScript

أحداث JavaScript

وظائف JavaScript

JS HTML DOM

BOM لمتصفح JS

دليل أساسي لـ AJAX

كتيب مرجعي لـ JavaScript

دائرة For في JavaScript

تستخدم الدوائر في البرمجة لتنفيذ المهام المتكررة تلقائيًا.

على سبيل المثال، لنفترض أننا نريد طباعة "Hello World" 10 مرات. يمكن القيام بذلك كما يلي:

  document.write("Hello World<br>");
  document.write("Hello World<br>");
  document.write("Hello World<br>");
  document.write("Hello World<br>");
  document.write("Hello World<br>");
  document.write("Hello World<br>");
  document.write("Hello World<br>");
  document.write("Hello World<br>");
  document.write("Hello World<br>");
  document.write("Hello World<br>");

وفي الدائرة، يجب كتابة هذه الجملة مرة واحدة فقط، والدائرة ستتم تنفيذها 10 مرات، مثلما يلي:

for (let i = 0; i < 10; i++) {
document.write("Hello World<br>");
}
اختبار لـ‹/›

دائرة For

نصنع دائرة بناءً على التالي:

for (initialization; condition; final-expression) {
    //جملة تحت التنفيذ
}

initializationتم تنفيذ هذا قبل تنفيذ الجملة (مرة واحدة).

conditionتم تعريف شرط تنفيذ الجملة.

سيتم تنفيذ هذا في كل مرة بعد تنفيذ الجملةfinal-expression.

for (var i = 0; i < 5; i++) {
    document.write("<br>رقم هو " + i);
}
اختبار لـ‹/›

من خلال المثال السابق، يمكنك قراءة:

  • initialization تم تعريف المتغير قبل بدء الدائرة (متغير i = 0).

  • condition تم تعريف شرط تنفيذ الدائرة (أنا يجب أن أكون أقل من 5).

  • كلما تم تنفيذ كود الدائرة،final-expression ستكونزيادة قيمة (i++)

في المثال التالي، سنقوم بمرور دائري في ترتيب تصاعدي عبر مصفوفة:

var fruits = ['Apple', 'Mango', 'Banana', 'Orange'];
var txt = "
for (var i = 0; i < fruits.length; i++) {
    txt += fruits[i] + "<br>";
}
اختبار لـ‹/›

في المثال التالي، سنقوم بمرور دائري في ترتيب تنازلي عبر مصفوفة:

var fruits = ['Apple', 'Mango', 'Banana', 'Orange'];
var txt = "
for (var i = fruits.length - 1; i >= 0; i--) {
txt += fruits[i] + "<br>";
}
اختبار لـ‹/›

可选表达式

for循环中的三个表达式都是可选的。例如,我们可以通过在循环外部初始化变量来编写相同的For语句,而不需要初始化表达式。

//在循环外声明变量
var i = 0;
//初始化循环
for (; i < 5; i++) {
document.write(i);
}
اختبار لـ‹/›

在这种情况下,第一个; 表示该语句是指向初始化,条件还是最终表达式,即使省略它也是必要的。

下面,我们还可以从循环中删除条件。我们将使用一个if语句和break来告诉循环在i大于3时停止运行,这与true条件相反。

//在循环外声明变量
var i = 0;
//省略初始化和条件
for (; ; i++) {
if (i > 3) {
break;
}
document.write(i);
}
اختبار لـ‹/›

注意:break如果省略该条件,则必须包含该语句,否则循环将永远无限循环运行,并可能导致浏览器崩溃。

最后,可以通过将最终表达式放在循环末尾来将其删除。两个分号仍必须包含在内,否则循环将无法运行。

//在循环外声明变量
var i = 0;
//省略所有表达式
for (; ; ) {
if (i > 3) {
break;
}
document.write(i);
i++;
}
اختبار لـ‹/›

从上面的示例可以看出,包括所有这三个语句通常会产生最简洁易读的代码。但是,知道以后可以省略语句是很有用的。

嵌套循环

您可以嵌套循环,即在另一个循环内循环。

嵌套循环在矩阵乘法中的大多数地方都使用,显示表格和许多其他地方:

var txt = "";
for (var row = 0; row < 10; row++) {
   for (var col = 0; col < row; col++) {
   txt += " * ";
   }
   txt += "<br>";
}
اختبار لـ‹/›

For ...in循环

for...in循环迭代的对象的属性。

为了演示,我们将创建一个简单的myObj对象,其中包含一些name:value对。

var myObj = {
name: "VISHAL",
age: 22,
height: 175,
city: "New Delhi",
getNothing: function () { return ""; }
};
for (let x in myObj) {
document.write(x);
}
اختبار لـ‹/›

في كل تكرار، سيتم تخصيص خاصية من الأصناف إلىوستستمر هذه الدائرة حتى يتم استنفاد جميع الخصائص في الأصناف.

يوضح هذا المثال كيفية تنفيذ دائرة for...in وطباعة خصائص متصفح الويب.مستكشفالشخصية:

for (let x in navigator) {
document.write(x);
}
اختبار لـ‹/›

دائرة For ... Of

تقوم جملة for...of بإنشاء دائرة للاطلاع على الأصناف القابلة للمرور، بما في ذلك: الأصناف المدمجة مثل String، Array، الأصناف المماثلة لـ Array، والأصناف المحددة من قبل المستخدم.

let iterable = [10, 20, 30, 40, 50];
for (let x of iterable) {
document.write(x);
}
اختبار لـ‹/›

في كل تكرار، سيتم تخصيص عنصر من الأصناف إلىوستستمر هذه الدائرة حتى يتم استنفاد جميع العناصر في الأصناف.

بغض النظر عن ما يطالعونه دوائر for...in وfor...of، الفرق الرئيسي بينهما هو المحتوى الذي يطالعونه:

  • تكرار for...in للاطلاع على الخصائص المدرجة في الأصناف، بترتيب عشوائي.

  • تكرار for...of للاطلاع على البيانات، يجب تعريف الأصناف التي سيتم مرورها.

دائرة while

سيتم شرح دوائر while وdo...while في الفصل التالي.