Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Чем заменить continue (https://javascript.ru/forum/misc/84413-chem-zamenit-continue.html)

Aetae 02.09.2022 23:21

Alikberov, лол, потому что это запутает код ещё больше. С метками то уже ад, с цифрами - вообще полное безумие.

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


Это тут у тебя три цикла сразу подряд и выполняют полтора действия(и то с полпинка не рабирёшься), а попробуй представить себе реальный цикл с этим дерьмом.

Alikberov 02.09.2022 23:55

Цитата:

Сообщение от Aetae (Сообщение 547729)
Alikberov, лол, потому что это запутает код ещё больше. С метками то уже ад, с цифрами - вообще полное безумие.

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


Это тут у тебя три цикла сразу подряд и выполняют полтора действия(и то с полпинка не рабирёшься), а попробуй представить себе реальный цикл с этим дерьмом.

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

Но, правда: Иногда, в очень узких местах, указание уровня действия не помешало бы, чем вкладывать в цикл функцию с циклом и прерываться по return true/false, типа:
for(i = 0; i < x; ++ i) {
	if(function() {
		for(j = 0; j < y; ++ j) {
			if(i == j)
				return false;
		}
	})
		continue;
}
Что ещё хуже.

Aetae 03.09.2022 00:38

Alikberov, по-хорошему - разбить всё на отдельные функции с говорящими именами и вызывать одну из другой.
Максимум для цикла двойная вложенность и то только в простых случаях.

voraa 03.09.2022 14:34

Цитата:

Сообщение от Alikberov
Почему нельзя указать число с указанием уровня вложенности для их действия?

Так label для этого и существуют. Не надо вручную считать уровень вложенности.

voraa 03.09.2022 14:46

Вообще в программировании существуют много спорных ситуаций, про которые есть прямо противоположные мнения. Стоит так делать или нет. С одной стороны "удобочитаемость", с другой стороны эффективность.
Это и break, и вложенные тетрарные операции, и использование блоков для инкапсуляции переменных, и обязательное закрытие тегов в html....
Удобочитаемость, как мне кажется - дело привычки и понимания кода.

Доходит до того, что ругань идет по поводу x | 0 для взятия целой части. Мол это не понятно, и всегда надо Math.floor.
А вдруг, кому то не понятно x++? Тогда надо всегда х += 1; использовать? Хотя кому то и это может быть не понятно.
Тогда уж x = x+ 1; И только так.

рони 03.09.2022 14:58

Цитата:

Сообщение от voraa
Доходит до того, что ругань идет по поводу x | 0 для взятия целой части. Мол это не понятно, и всегда надо Math.floor.

Math.trunc()

Alikberov 03.09.2022 15:14

Цитата:

Сообщение от voraa (Сообщение 547734)
Так label для этого и существуют. Не надо вручную считать уровень вложенности.

Нe всегда получается придумать вразумительное имя функции, не говоря уж о метках.:no:
Тем более, когда тело функции синтезируется по шаблону при запуске скрипта.
Цитата:

Доходит до того, что ругань идет по поводу x | 0 для взятия целой части. Мол это не понятно, и всегда надо Math.floor.
А вдруг, кому то не понятно x++? Тогда надо всегда х += 1; использовать? Хотя кому то и это может быть не понятно.
Тогда уж x = x+ 1; И только так.
Для себя я выработал правило писать «for(i = 0; i < n; ++ i) {» вместо «for(i = 0; i < n; i++){», так как «++){» - эзотерика какая-то…

А «x | 0» выглядит не так интуитивно, как «x.0»…:yes:

Тем более, в условиях форума «Math.floor(x)» - слишком громоздкая запись…

Vlasenko Fedor 03.09.2022 15:16

voraa,
x | 0 - неудачный пример для js
Math.floor - работает быстрее и с большими числами
const a = Math.pow(2, 52) / 3;
console.log(a, a|0, Math.floor(a));
alert((a|0) === Math.floor(a))

voraa 03.09.2022 15:55

Цитата:

Сообщение от Vlasenko Fedor
x | 0 - неудачный пример для js

Разумеется, когда это возможно (число в пределах 2**32).
Для меня большие целые числа - экзотика.

Цитата:

Сообщение от Alikberov
не так интуитивно, как «x.0»

Проблема в том, что так нельзя.

Alikberov 03.09.2022 16:19

Цитата:

Сообщение от voraa (Сообщение 547739)
Проблема в том, что так нельзя.

Зa 27 лет JavaScript изменился достаточно хорошо.:yes:
И приобрёл множество экзотических синтаксических особенностей.
Перегрузку операторов до сих пор не ввели.
Думаю, не было бы большой проблемой добавить подобную фишку округления до указанного порядка:
console.log(Math.PI.0);	// 3
console.log(Math.PI.1);	// 3.1
console.log(Math.PI.2);	// 3.14
console.log(Math.PI.3);	// 3.141
console.log(Math.PI.4);	// 3.1415
console.log(Math.PI.5);	// 3.14159
Чем выражение «Math.floor(x * 10 ** n) / 10 ** n» (иногда это требуется)…
(Хотя Фортрановский ** ввели совсем недавно тоже.)


Часовой пояс GMT +3, время: 07:07.