gpt4 book ai didi

javascript - 为什么执行这个Else条件?

转载 作者:行者123 更新时间:2023-12-03 01:49:48 24 4
gpt4 key购买 nike

我正在尝试理解 Zabiullah 的这个脚本,我在“https://www.experts-exchange.com/questions/24623403/Can-a-Sharepoint-page-be-refreshed-automatically-but-just-once.html”中找到了它。他的帖子是从 2009 年开始的,从那以后他就不再活跃了,所以我在这里问。

此代码应该在开始时仅重新加载页面一次,并防止下次重新加载。代码工作完美,但我无法理解 if(arguments.length ==1) 的 Else 条件何时执行,因为函数总是由 setReloadTime(5) 调用,这意味着它总是 true ?

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);

最佳答案

i can't understand when the Else condition of if(arguments.length ==1) is executed, since the funktion is allways called by setReloadTime(5), meaning it would be allways true

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

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

这就是为什么它在第一次调用后采用该分支。

<小时/>

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

关于javascript - 为什么执行这个Else条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50472066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com