有人可以向我解释为什么这个var是未定义的吗?

时间:2017-10-22 21:16:45

标签: javascript

我一直在尝试这个简单的代码。

var d = new Date();
x = ["Sunday","Monday","Tuesday", "Wednsday", "Friday", "Saturday", "Sunday"]; 
d.getDay();
document.getElementById("demo").innerHTML = "Today is " + x[d]; 

但它不起作用。它说今天未定义

相反,它的工作原理如下document.getElementById("demo").innerHTML ="Today is " x[d.getDay()];

但为什么?

1 个答案:

答案 0 :(得分:4)

您在d.getDay()中使用的方法Date#getDay会返回当天的编号,但不会更改d,它仍然是日期对象。要使用getDay()方法返回的值,您需要将结果分配给变量,或者直接使用它,就像在x[d.getDay()];中一样。

因为您使用括号d来使用对象[]来访问不存在的数组索引,所以得到undefined作为结果。

因为您实际上并不需要日期,只需将日期直接指定给d

var d = new Date().getDay()

示例:

var d = new Date().getDay();

var x = ["Sunday", "Monday", "Tuesday", "Wednesday", "Friday", "Saturday"];

document.getElementById("demo").innerHTML = "Today is " + x[d];
<div id="demo"></div>