Какой смысл имеет данная конструкция в JS?

label: {
  4 + 2;
}

Думал, что достаточно знаю о JS, но до сего момента полагал бы, что подобное обвалится исключением. Как оказалось, — успешно исполняется, но понять, какой в этой конструкции смысл и как это может быть использовано, — не получается. Также не получается понять, — почему это корректно исполняется?

P.S. Данную конструкцию увидел в документации к LiveScript.
  • Вопрос задан
  • 2489 просмотров
Решения вопроса 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Это — метка. Как case: или default:, использующиеся в switch.
Обычно в JS редко увидишь использование меток, поскольку единственная их цель — в случае нескольких вложенных циклов переходить из тела любого внутреннего цикла к отмеченному внешнему, невзирая на уровень вложенности.

Для этого используются инструкции break и continue, которые без метки работают непосредственно с тем циклом, в теле которого указаны. Если добавить метку, происходит прерывание (break) помеченного цикла либо переход к его блоку изменений (continue).

Там же написано:
useful for nested loops

Пример:

var stop = 7;

label:
for (var i = 10; i--;) {
	console.log('i:', i);
	for (var j = 10; j--;) {
		console.log('j:', j);
		if (j == stop) {
			console.log('stop');
			break label;
		}
	}
}
console.log('stopped');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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