JavaScript—为什么在使用语句之前声明的变量时,if/else语句的输出不同?
我的问题是关于以下代码:JavaScript—为什么在使用语句之前声明的变量时,if/else语句的输出不同?,javascript,Javascript,我的问题是关于以下代码: var d = new Date(); var weekday = ["su", "mo", "tu", "we", "th", "fr", "sa"]; var deliver = weekday[d.getDay()]; if(condition){ if(d.getDay() == 1){ d.setHours(d.getHours() + 24); // adds a day } if(d.getUTCMonth() ==
var d = new Date();
var weekday = ["su", "mo", "tu", "we", "th", "fr", "sa"];
var deliver = weekday[d.getDay()];
if(condition){
if(d.getDay() == 1){
d.setHours(d.getHours() + 24); // adds a day
}
if(d.getUTCMonth() == 0 && d.getUTCDate() == 1){
// do something
} else {
// version 1 or version 2
}
}
//version 1: var deliver = weekday[d.getDay()];
// document.getElementById("leverdatum").innerHTML = deliver;
//version 2: document.getElementById("leverdatum").innerHTML = deliver;;
为什么,如果我使用版本1,输出是“tu”,如果我使用版本2,输出是“mo”?在该行上存在(或缺少)var完全没有任何作用
重要部分是=weekday[d.getDay()]代码>
因为现在是星期一,d.setHours(d.getHours()+24);//添加一天
将添加一天。把这一天定在星期二
但是,如果在更改d
的值后,不将d
的值转换为一天,并将其分配给deliver
,那么您将继续保留原始字符串。因此<代码>d.setHours(d.getHours()+24);//添加一天
。由于变量托管,您不应该将var
放在块语句中,这可能会消除一些混淆删除var
没有什么区别。我认为这比你展示的要多——你是如何看待这个输出的?附加的var
不会有任何区别,它在相同的范围内。如果条件
为假
,则不会执行+24小时
。我想这就是OP的意思。是的,我真的不明白。您希望交付什么代码>要做什么?谢谢你理解我的问题!