2015-08-25 3 views
0

В моей книге говорится что-то, и я не совсем уверен, что это значит. В нем говорится, что, чтобы убедиться, что цикл выполняется правильно, вам нужно включить некоторый код, чтобы изменить значение условного выражения? Что это значит? Это верно? Может быть, я читал это неправильно, но если у вас есть базовый цикл Javascript какПетли и значения Javascript

if(contactsCount > 0) { 
     for (i = 0; i < contactsCount; i = i + 1){ 

      var item = object[i], 
       name = item.name, 
       email = item.email; 
      target.innerHTML += '<p><a href=mailto:' + email + '">' + name + '</a>!</p>; 
} 
} 
})(); 

Вы, конечно, не изменяя любые значения, чтобы сделать его работу? Я новичок в этом, так что я немного невежествен.

+1

Там нет петли в коде ?! –

+0

Woops, я, должно быть, как-то удалил его. В любом случае это был просто пример, который я использовал в ответ на инструкцию к книгам .. я обнов его – user3247128

+1

A while или для цикла имеет условие, например 'for (var i = 0; i <10; i ++)'. Если вы не обновите значение, если 'i' в' for', вам нужно обновить его где-нибудь внутри цикла, иначе цикл будет продолжаться бесконечно. – m69

ответ

3

... вам нужно включить код, чтобы изменить значение условного выражения? Что это значит?

То, что это плохая идея:

var i = 0; 
while (i < 10) { 
    doSomething(i); 
} 

Почему? Потому что цикл никогда не кончится. Значение i никогда не изменяется. Бесконечные петли - классическая форма ошибки.

Так что эта книга говорит, что вы должны обеспечить способ для условия цикла (i < 10) для изменения (например, путем изменения значения i «s).

Немного касательной, но:

Иногда вы видите петли, где условие, казалось бы, не может изменения, например:

while (true) { 
    // ... 
} 

Если вы оказываетесь достичь чего-то в этом роде, остановись и попытайся найти лучший способ. Есть очень редкие случаи использования для выше, то они выглядят так:

while (true) { 
    doThis(); 
    doThat(); 
    if (someCondition) { 
     break; 
    } 
    doAnotherThing(); 
} 

... так что в этом случае, контролирующее состояние на самом деле в середине, и один в самом операторе цикла не действительно условие. Это почти всегда плохая практика, но в очень редкие ситуации они могут быть правильными делами.


Он также говорит, что вы можете иметь другие заявления по той же линии, как «если заявление», верно?

Да, это так. JavaScript не заботится о строках на всех (за исключением случаев, когда он выполняет форму коррекции ошибок для вас, называемую Automatic Semicolon Insertion, тогда строки имеют значение, потому что в зависимости от того, что в алгоритме коррекции ошибок стоят точки с запятой). Все они являются действительными и все они делают то же самое:

// 1 
if (a < b) { 
    alert("a is less than b"); 
    foo(); 
} 
// 2 
if (a < b) { alert("a is less than b"); foo(); } 
// 3 
if (a < b) 
{ 
    alert("a is less than b"); 
    foo(); 
} 
// 4 
if (a < b) 
{ alert("a is less than b"); 
    foo; } 

Поскольку JavaScript не заботится о линии вообще, они вопрос стиля.

К сожалению, наиболее распространенным стилем для вышеперечисленного является # 1.

Отдельно, если у вас есть только оператор в корпусе оператора потока управления, то блок ({...}) не является обязательным.Они делают то же самое:

// 1 
if (a < b) { 
    alert("a is less than b"); 
} 
// 2 
if (a < b) 
    alert("a is less than b"); 
// 3 
if (a < b) alert("a is less than b"); 

Таким образом, используя {...} для одного оператора в теле также, технически, вопрос стиля. На практике, однако, всегда использование блоков приводит к меньшему количеству ошибок в вашем коде. Если вы оставите от блоков, он будет в конечном счете укусить вас, когда вы добавляете второе заявление и забудьте добавить блок:

if (a < b) 
    alert("a is less than b"); 
    foo(); 

В вышеприведенном foo() это всегда называли, потому что это не в корпусе if. Этот код делает это:

if (a < b) { 
    alert("a is less than b"); 
} 
foo(); 
+0

Спасибо за всю эту информацию, ничего себе! Значит, тогда книга правильная? Необходимо изменить значение выражения условия, чтобы заставить цикл работать? – user3247128

+1

@ user3247128: Да, книга верна: вы * должны * указать способ изменения значения выражения условия. –

+0

спасибо !! Я действительно ценю твою помощь. Также возможно, что вы можете иметь другие операторы в той же строке, что и оператор «if»? Я никогда не видел этого, я не верю. – user3247128

-1

в цикле вы действительно должны использовать (я ++) стенографии, но, как ваш делать это (я = я + 1) будет работать отлично, а также.

Так как я не ваш полный исходный код здесь приведен пример ...

Here is the JSFiddle demo

// JAVASCRIPT

//animals array 
var animals = ['cat','dog','fish','bird','tiger']; 

//loop through the animals array 
for (i = 0; i < animals.length; i++){ 
    console.log(animals[i]); 
} 
+0

Есть ли причина, по которой это получило голос? лол –

Смежные вопросы