为什么执行这个Else条件?

时间:2018-05-22 16:04:58

标签: javascript sharepoint

我试图理解Zabiullah的这个剧本,我在" https://www.experts-exchange.com/questions/24623403/Can-a-Sharepoint-page-be-refreshed-automatically-but-just-once.html"中找到了这个剧本。他的帖子是从2009年开始的,从那以后他一直没有活跃,所以我在这里问。

此代码应仅在beginn处重新加载页面一次,并防止下次重新加载。代码工作得很好,但我不能理解if(arguments.length == 1)的Else条件何时被执行,因为funktion总是被setReloadTime(5)调用,这意味着它总是正确的? / p>

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 :(得分:1)

  

我无法理解何时执行if(arguments.length == 1)的Else条件,因为funktion总是被setReloadTime(5)调用,这意味着它总是真的

不,代码设置一个计时器来运行它而不带任何参数:

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

这就是为什么它在第一次通话后需要分支。

那就是说,根据它是否有一个参数,让一个函数完成两个完全不同的事情是没有意义的。相反,该代码的原作者应该只编写两个函数。