2012-05-28 2 views
1

Можете ли вы объяснить мне, как использовать метки для операторов, которые взаимодействуют с break: switch, while, do и for.Использование меток в javascript

с примером пожалуйста.

+1

Какие конкретные проблемы вы с? Можете ли вы показать код, который вы не понимаете? –

+0

В чем вопрос? С чем вы столкнулись? – Undefined

+2

Мне никогда не приходилось использовать ярлык в JS-программировании. – Alnitak

ответ

9

Обычно, я вижу его в breaking out to outer loops:

var i, j; 

dance: for (i = 0; i < 20; i++) { 
    for (j = 0; j < 20; j++) { 
     console.log(i+'-'+j); 
     if (j === 10) { //normally, break only breaks the immediate loop 
      break dance; //this one breaks the loop labelled as dance 
     } 
    } 
}​ 

//continue here after i = 0,j = 10 
+1

«ярлык для случая» и ярлык break/continue - это разные вещи. – Alnitak

+0

@Alnitak обновлено – Joseph

0

Не используйте этикетки.

Пример:

// no label 
while (condition) { 
    // do something 
} 
+0

+1 очень ясно ... –

+0

Тот же комментарий, что и с ответом Алнитак ... –

1

Quouting сети разработчиков Mozilla Language Reference:

Предоставляет оператор с идентификатором, который вы можете обратиться к использованию перерыв или продолжить заявление.

Например, вы можете использовать метку для идентификации цикла, а затем использовать инструкции break или continue, чтобы указать, должна ли программа прерывать цикл или продолжать его выполнение.

Обратите внимание, что они также говорят:

Метки не очень широко используется в JavaScript, так как они делают программы труднее читать понять. Насколько это возможно, избегать использования ярлыков и, в зависимости от случаев, предпочитает вызов функции или бросать ошибку

+0

Это не отвечает на вопрос. Кроме того, зачем ломать

+1

@SamuelRossille Я просто цитирую парней, которые разработали язык в первую очередь, и обратите внимание, что на той же странице _does_ описывается, как его использовать, и, следовательно, отвечает на вопрос. – Alnitak

+1

Я не использую их сам, но мне всегда кажется, что в этом аргументе есть круглость, поскольку во многих случаях единственная причина, по которой они делают код «труднее читать», будет заключаться в том, что люди не используют их и не пропускают точка зрения на код. В этом случае это можно сказать о любой языковой функции: использование этого кода сделает код более трудным для чтения для людей, которые не используют или не понимают эту функцию. Это только что стало формой литургии с течением времени («повторяй за мной ...»). – delicateLatticeworkFever

0

Вот хороший article на этикетке GOTO в JS. Я никогда не использую логику меток GOTO, поэтому я тоже научился чему-то новому сегодня.

JS код из статьи:

var pastures = getPastures(); 
var i, pastureLen = pastures.length; 

pastureLoop: 
for (i = 0; i < pastureLen; i++) 
{ 
    var pasture = pastures[i]; 
    var cows = pasture.getCows(); 

    var j, numCows = cows.length; 
    for (j = 0; j < numCows; j++) 
    { 
     var cow = cows[j]; 
     if (cow.isEating()) 
      { continue pastureLoop; } 
    } 

    // No cows were eating, so fire the callback for pasture[i] 
    pasture.executeCallback(); // or whatever 
} 
Смежные вопросы