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的意思。是的,我真的不明白。您希望
交付什么要做什么?谢谢你理解我的问题!