Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Правильный вызов функции (https://javascript.ru/forum/events/42066-pravilnyjj-vyzov-funkcii.html)

ArtemKrass 11.10.2013 09:50

Правильный вызов функции
 
Всем привет!
Пишу небольшой скриптик.
В нем есть функция, в функции цикл, в цикле условие.
Мне нужно чтобы при выполнении условия данная функция останавливалась и запускалась с самого начала.
Как это правильно сделать что-то не соображу... Подскажите, пожалуйста.

ksa 11.10.2013 10:22

Цитата:

Сообщение от ArtemKrass
функция останавливалась

Это как понять? :blink:
- Функция, стой! раз, два... (с)

BETEPAH 11.10.2013 10:36

break METKA

ArtemKrass 11.10.2013 10:52

Цитата:

Сообщение от BETEPAH (Сообщение 275873)
break METKA

Break же останавливает цикл, а мне надо приостановить и запустить заново всю функцию...

return подойдет?

BETEPAH 11.10.2013 10:55

Цитата:

Сообщение от ArtemKrass
Break же останавливает цикл, а мне надо приостановить и запустить заново всю функцию...

return подойдет?

нет. return только закончит работу функции. А что ограничивает вас поставить в условие вызов функции?
(function f() {
		var a = prompt('введите единицу','1');
		if (a == '1') f();
})()

ArtemKrass 11.10.2013 11:11

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function func(val){
for (i in arr){
    if (arr[i] == val){
        console.info(arr[i]);
    }
}
}

func(7);


Вот мне нужно при переборе массива если val совпадет с числом в масииве, прервать выполнение функции и запустить ее сначала...

BETEPAH 11.10.2013 11:17

Цитата:

Сообщение от ArtemKrass
Вот мне нужно при переборе массива если val совпадет с числом в масииве, прервать выполнение функции и запустить ее сначала...

С каким параметром надо запустить сначала? :)
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
function func(val){
	for (i in arr){
		if (arr[i] == val){
			console.info(arr[i]);
		break;
		}
	}
	func(7);
}
func(7);

И кстати, массивы рекомендуется перебирать в цикле for (var i = 0; i < arr.length; i++), так как цикл for (i in arr) будет всякие вспомогательные ключи еще брать, он предназначен для неупорядоченных объектов

ksa 11.10.2013 11:29

Цитата:

Сообщение от ArtemKrass (Сообщение 275881)
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function func(val){
for (i in arr){
    if (arr[i] == val){
        console.info(arr[i]);
    }
}
}

func(7);


Вот мне нужно при переборе массива если val совпадет с числом в масииве, прервать выполнение функции и запустить ее сначала...

Поскольку массив неизменен - ты попадаешь в вечный цикл.
И в чем с мысл? :)

ArtemKrass 11.10.2013 12:11

Мне и нужен вечный цикл, просто значение val у меня меняется динамически... Может пример неуданый привел

ksa 11.10.2013 13:18

Цитата:

Сообщение от ArtemKrass
Мне и нужен вечный цикл

:blink:
При таком подходе твой браузер будет просто "висеть", на странице ничего происходить не будет... :)

Цитата:

Сообщение от ArtemKrass
Может пример неуданый привел

Не "может", а точно неудачный. :)


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