2018-10-12 16:35:31 -04:00
|
|
|
---
|
|
|
|
|
title: Prevent Infinite Loops with a Valid Terminal Condition
|
|
|
|
|
localeTitle: منع حلقات لا نهائية مع شرط محطة صالح
|
|
|
|
|
---
|
|
|
|
|
## منع حلقات لا نهائية مع شرط محطة صالح
|
|
|
|
|
|
|
|
|
|
* لمنع حلقة لا نهائية، و `while-condition` يجب أن تصل إلى حالة محطة للخروج من الحلقة.
|
|
|
|
|
* لذا يحدث الخطأ في هذا التحدي بسبب الشرط - `i != 4` - في حلقة for.
|
|
|
|
|
* إذا ألقيت نظرة عن كثب على الرمز:
|
|
|
|
|
|
2019-06-20 14:05:02 -07:00
|
|
|
```javascript
|
|
|
|
|
function myFunc() {
|
|
|
|
|
for (let i = 1; i != 4; i += 2) {
|
|
|
|
|
console.log("Still going!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
2018-10-12 16:35:31 -04:00
|
|
|
|
|
|
|
|
* سترى أن `i` هو initialised أولا ك 1 وبعد كل تكرار للحلقة، `i` يتزايد بنسبة 2.
|
|
|
|
|
* باستخدام هذا المنطق ، بعد التكرار الأول - `i = 3` والتكرار الثاني `i = 5` ، لن يتم استيفاء الشرط `i != 4` وستحدث حلقة لا نهائية.
|
|
|
|
|
|
|
|
|
|
## حل:
|
|
|
|
|
|
2019-06-20 14:05:02 -07:00
|
|
|
```javascript
|
|
|
|
|
function myFunc() {
|
|
|
|
|
for (let i = 1; i <= 4; i += 2) {
|
|
|
|
|
console.log("Still going!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|