Почему выполняется это условие? - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь понять этот сценарий Забиуллы, который я нашел в "https://www.experts -exchange.com / questions / 24623403 / Can-a-Sharepoint-page-быть обновленным-автоматически-но-но-просто-once.html ».Его пост был с 2009 года, и он не был активен с тех пор, поэтому я спрашиваю здесь.

Этот код должен перезагрузить страницу только один раз в начале и предотвратить ее перезагрузку в следующий раз.Код работал отлично, но я не могу понять, когда выполняется условие Else if (arguments.length == 1), так как функция всегда вызывается setReloadTime (5), что означает, что это всегда будет верно?

var reloadTimer = null;
var sURL = window.location.href;

function setReloadTime(secs) {

    if (arguments.length == 1) {
        if (reloadTimer)
            clearTimeout(reloadTimer);
        reloadTimer = setTimeout("setReloadTime()", Math.ceil(parseFloat(secs) * 1000));
    } else {
        if (sURL.indexOf("loaded=1") == -1) {
            reloadTimer = null;
            var queryString = location.search.substring(1);
            sURL += (queryString ? "&" : "?") + 'loaded=1';
            window.location = sURL;
        } else {
            clearTimeout(reloadTimer);
        }
    }
}

setReloadTime(5);

1 Ответ

0 голосов
/ 22 мая 2018

Я не могу понять, когда выполняется условие Else if (arguments.length == 1), поскольку функция всегда вызывается с помощью setReloadTime (5), то есть она всегда будет истинной

Нет, код устанавливает таймер для его запуска без каких-либо аргументов:

reloadTimer = setTimeout("setReloadTime()", Math.ceil(parseFloat(secs) * 1000));
// Here -----------------^^^^^^^^^^^^^^^^^

Именно поэтому он принимает эту ветвь после первого вызова.


То есть, нет смысла заставлять одну функцию делать две совершенно разные вещи в зависимости от того, имеет ли она аргумент.Вместо этого первоначальный автор этого кода должен был просто написать две функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...