JavaScript - 为什么在使用语句之前声明的变量时与 if/else 语句的输出不同

JavaScript - Why different output from if/else statement while using a variable declared before the statement?

本文关键字:语句 if 输出 else 变量 声明 为什么 JavaScript      更新时间:2023-09-26

我的问题是关于以下代码的:

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); // adds a day将增加一天。让这一天成为星期二。

但是,如果您没有将 d 的值转换为一天并在更改 d 的值将其分配给 deliver,那么您将继续拥有原始字符串。