Вопрос по javascript – Использование меток в JavaScript

1

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

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

олоса @ down немного резкие - это может быть не очень хорошо написанный вопрос, и ярлыки вполне могут быть рядом только сeval во зле, но нет ничего плохого в том, что он спрашивает. Alnitak
В чем вопрос? С чем у тебя проблемы? Undefined
Мне никогда не приходилось использовать метку в JS-программировании. Alnitak
Какая у тебя проблема? Можете ли вы показать код, который вы не понимаете? Andrew Whitaker
Охххххх, я никогда не знал, что они существуют в JS. Это какgoto заявление. Не используйте их. Trevor

Ваш Ответ

4   ответа
9

Обычно я вижу это в вырывается на внешние петли:

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
a «метка кейса» и метка перерыв / продолжениеочен разные вещи Alnitak
@ Alnitak обновлен Joseph
1

стать на ярлыке 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
 }
1

Ссылка на язык:

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

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

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

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

Это не отвечает на вопрос. Кроме того, зачем ломать <label>; быть более неясным, чем сломаться; ? Проблема в разрыве, а не в ярлыках. Samuel Rossille
@ SamuelRossille Я просто процитирую парней, которые разработали язык в первую очередь - и обратите внимание, что та же страница Делает опишите, как его использовать, и, следовательно, ответьте на вопрос. Alnitak
Я сам ими не пользуюсь, но мне всегда кажется, что в этом аргументе есть округлость, поскольку во многих случаях единственная причина, по которой они затрудняют чтение кода, заключается в том, что люди его не используют и пропускают смысл при взгляде на код. В этом случае это можно сказать о любой языковой функции: ее использование затруднит чтение кода для людей, которые не используют или не понимают эту функцию. Со временем это стало формой литургии («повтори за мной ...»). delicateLatticeworkFever
@ Златовласка а Компетентный программист действительно не будет иметь проблем с этой концепцией. Однако компетентный программист не должен был бы спрашивать в первую очередь ... Alnitak
0

Пример

// no label
while (condition) {
    // do something
}
+ 1 очень ясно ... Antti Huima
Тот же комментарий, что и в ответе Алнитак ... Samuel Rossille

Похожие вопросы