Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Самовызов функции, с передачей параметров, до выполнения условия (https://javascript.ru/forum/dom-window/70396-samovyzov-funkcii-s-peredachejj-parametrov-do-vypolneniya-usloviya.html)

DDim1000 02.09.2017 13:21

Самовызов функции, с передачей параметров, до выполнения условия
 
Здравствуйте!
Подскажите пожалуйста, как сделать так, чтобы функция вызывала сама себя, пока (a > b) ?

j0hnik 02.09.2017 13:35

function nnn(){
// некий код
  if(a > b) nnn();
}
nnn();

DDim1000 02.09.2017 13:58

А если так?:

function nnn(b){
var a = 100;
  if(a > b) {b = b+1; nnn(); }
}
var b = 1;
nnn(b);

Как передавать значения b функции, пока станет b == a ?

j0hnik 02.09.2017 14:22

var a = 10, b=0;
function nnn(){
b++;
alert(b);
  if(a !== b) nnn();
}
nnn();


может вам обычный цикл нужен?

DDim1000 02.09.2017 15:19

Есть кнопка, которая запускает таймер обратного отсчета. И время, до которого будет производиться отсчет, всегда разно. Оно берется из ранее созданных localstorage, по id.

function Unlock(idls)
{
              if (localStorage[idls]){
moment.locale('ru');
var UnlockRe = moment(localStorage[idls]).valueOf();


var DateTime = moment().valueOf();
var d  = UnlockRe - DateTime;

if (d > 0) 
   {
       $('#mes-re').attr("class","message-error").html('Повторить попытку можно будет через: '+moment(d).utc().format('HH:mm:ss')).slideDown(400);
    d > 0 && window.setTimeout(Unlock(), 300)	
   }else
   {
      ...
	return 'false';    
   }
                    }else
					  {return 'false';}
}


$('#button-re').click(function(){
	var rec = $("#rel").val();
	
	if (rec == "" || rec.length > 20)
	{
	    $("#reс").css("borderColor","#FDB6B6");	
	}else
	{
	    var Unlock = UnlockRemind(rec);
		if (Unlock == 'false')
		   { 
                    ...
                   }
	}
	});

Белый шум 03.09.2017 01:35

Цитата:

Сообщение от DDim1000 (Сообщение 463453)
А если так?:

function nnn(b){
var a = 100;
  if(a > b) {nnn(b+1); }
}
var b = 1;
nnn(b);

P.S.: это называется рекурсией, а не самовызовом...

Rasy 03.09.2017 08:13

Можно и самовызов с рекурсией
(function nnn(b) {
  console.log(b);
  var a = 100;
  if(a > b) {return nnn(b+1);}
})(1);

DDim1000 03.09.2017 16:03

Спасибо большое!


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