Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.09.2022, 11:32
Аспирант
Отправить личное сообщение для Andy_kun Посмотреть профиль Найти все сообщения от Andy_kun
 
Регистрация: 05.08.2022
Сообщений: 64

Чем заменить continue
Подскажите пожалуйста, чем заменить continue для такого кода:
continue - естественно так не работает. Есть ли в JS - аналог оператора goto, который бы так сработал ?

function my_func(numm)
{

   if(numm == 1)
   {
    continue jump;
   }

console.log("check_1");
   if(numm == 2)
   {
    continue jump;
   }

console.log("check_2");    
   if(numm == 3)
   {
    continue jump;
   }   

console.log("check_3");


jump:
console.log("jump");
}



my_func(2);
Ответить с цитированием
  #2 (permalink)  
Старый 02.09.2022, 12:13
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

https://developer.mozilla.org/ru/doc...atements/label
Ответить с цитированием
  #3 (permalink)  
Старый 02.09.2022, 12:32
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,712

function my_func(numm){
  jump: {
       if(numm == 1)  break jump;

       console.log("check_1");

       if(numm == 2)  break jump;

       console.log("check_2");  

       if(numm == 3)  break jump;
     
       console.log("check_3");
  } 
 
   console.log("jump");
}
 
my_func(2);

Последний раз редактировалось voraa, 02.09.2022 в 12:38.
Ответить с цитированием
  #4 (permalink)  
Старый 02.09.2022, 12:44
Аспирант
Отправить личное сообщение для Andy_kun Посмотреть профиль Найти все сообщения от Andy_kun
 
Регистрация: 05.08.2022
Сообщений: 64

Спасибо!
Ответить с цитированием
  #5 (permalink)  
Старый 02.09.2022, 13:47
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,501

Тока за такое руки отрывают и в любых нормальных конфигах оно запрещено.
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 02.09.2022, 14:04
Аспирант
Отправить личное сообщение для Andy_kun Посмотреть профиль Найти все сообщения от Andy_kun
 
Регистрация: 05.08.2022
Сообщений: 64

Сообщение от Aetae Посмотреть сообщение
Тока за такое руки отрывают и в любых нормальных конфигах оно запрещено.
Спасибо за предупреждение, я для себя
Ответить с цитированием
  #7 (permalink)  
Старый 02.09.2022, 17:22
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,712

Сообщение от Aetae
в любых нормальных конфигах оно запрещено.
Конфиги не боги делают.
А людям свойственно ошибаться.
Или выдавать свое частное мнение за Истину.
Ответить с цитированием
  #8 (permalink)  
Старый 02.09.2022, 20:40
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,501

Это запрещено по той же причине что и goto - мозголомное запутывание кода. Очень мало людей назовут это ошибкой.
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 02.09.2022, 21:28
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,712

Много, чего можно назвать запутыванием кода.
Тот же break в цикле, разве не подобен goto?
Тот же break в swinch - case разве не служит той же цели - пропустить что то и выйти из блока.

От goto break отличается тем, что передает управление не куда угодно, а просто завершает выполнение блока, подобно, как if () return; завершает функцию.
if () return не запрещен? А то ведь это тоже нарушает парадигму структурного программирования, согласно которой у функции (подпрограммы) должен быть один вход и один выход.
Ответить с цитированием
  #10 (permalink)  
Старый 02.09.2022, 23:17
Аватар для Alikberov
Кандидат Javascript-наук
Отправить личное сообщение для Alikberov Посмотреть профиль Найти все сообщения от Alikberov
 
Регистрация: 16.08.2018
Сообщений: 109

Присoeдинюсь к дискуссии.

Лично меня тоже напрягает ограниченность break/continue.
Почему нельзя указать число с указанием уровня вложенности для их действия?
Примерно вот так:
for(i = 0; i < x; ++ i) {
	for(j = 0; j < y; ++ j) {
		for(k = 0; k < z; ++ k) {
			if(k == i)
				continue 1;	// continue 0 / continue - продолжение текущего блока (for k)
							// continue 1 - продолжение блока на 1 уровень выше (for j)
							// continue 2 - продолжение блока на 2 уровня выше (for i)
			switch(m[k]) {
			case false:
				break 2;	// break - выйти из switch
							// break 0 - выйти из текущего цикла (for k)
							// break 1 - выйти из цикла на 1 уровень выше (for j)
							// break 2 - выйти из цикла на 2 уровня выше (for i)
			}
		}
		console.log("Покинули цикл for k");
		if(i == j)
			break 2;		// выходим из цикла двумя уровнями выше (for i)
		switch(m[j]) {
		case true:
			continue 1;		// продолжение блока на 1 уровень выше (for i)
		}
	}
	console.log("Покинули цикл for j");
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заменить данный кусок кода, чтобы он корректно работал в extjs5? Risa ExtJS 3 05.02.2015 22:24
Чем можно сделать отображение видео на сайте как в примере? Duda.Ml1986@gmail.com Библиотеки/Тулкиты/Фреймворки 0 24.10.2014 11:13
Чем заменить live() ? FRIE jQuery 2 06.10.2014 18:03
Чем заменить вызов GetObject (JS) в Internet Explorer 9 и новее? 13hakta Internet Explorer 0 17.04.2014 15:21
Помогите найти в чем ошибка Pashok Элементы интерфейса 6 26.02.2013 20:20