Javascript日期对象混淆

Javascript date object confusion

本文关键字:对象 日期 Javascript      更新时间:2023-09-26

作业中的问题是:

创建名为dateUS()的函数。

这个函数将接受Date对象作为参数。它将根据参数的值返回如下格式的字符串'mm/dd/yyyy'。

我写的代码是这样的:
function getMonth(today) {
  var inMo = today.getMonth();  
  inMo += 1;        
  return inMo;                      
}
function dateUS(inDate) {
  document.write(getMonth(today) + "/" + today.getDate() + "/" + today.getFullYear());
}

我不明白"inDate"在这段代码中做什么?我想知道这是否是我得到这个输出的原因:5/7/2014undefined

我不明白"接受日期对象作为参数"有人能解释吗?请保持简单。这是一门Javascript 101课程,我只是在学习。非常感谢您的帮助。

函数参数允许函数对不同的输入进行操作。在本例中,inDate是调用函数时提供的参数的本地名称。所以函数应该是:

function dateUS(inDate) {
    document.write(getMonth(dateUS) + '/' + dateUS.getDate() + '/' + dateUS.getFullYear());
}

如果你想写今天的日期,你可以这样调用函数:

dateUS(today);

问题中没有足够的信息来解释为什么undefined在日期之后显示。我猜你在做这样的事情:

document.write(dateUS(today));

如果dateUS返回它的结果而不是自己编写它,这将是合适的。这可能是更好的定义方式,但你不是这样做的。

函数可以访问三种类型的数据:

  1. 在函数作用域之外创建的数据(全局变量)。
  2. 函数内创建的数据。
  3. 作为参数传递给函数的数据。

因此,如果你有一个函数将date对象转换为字符串,你要么想使用全局变量(#1),要么将date对象作为参数传递(#3)。你通常想要使用后者,因为它更灵活,并且不需要你的函数了解围绕它的代码,这意味着你可以在另一个项目或代码的其他地方使用它。

例如,如果你想把两个数字相加,你可以写这个函数:

function add(a, b){
    return a + b;
}

您可以这样调用它:add(5, 6);,它将返回11。

现在,我们可以将其扩展到date对象。

function dateUS(date){
    return date.getDate();
}

这个函数将返回dategetDate方法的返回值,但是你需要修改它来适应你的赋值。

var date1 = new Date(); // Now
var date2 = new Date(0); // The beginning of time
alert(dateUS(date1)); // Alerts 7 (or whatever day of the month it is for you)
alert(dateUS(date2)); // Alerts 31
使用形参的优点是我们可以创建任意数量的日期对象,并且我们的函数将为所有这些对象工作。