Javascript日期对象混淆

时间:2014-05-08 00:00:44

标签: javascript

关于我的家庭作业的问题是:

  

创建一个名为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

我不明白“接受Date对象作为参数”有人可以解释一下吗?请保持简单。这是一个Javascript 101课程,我只是在学习。非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

函数参数允许函数对不同的输入进行操作。在这种情况下,inDate是调用函数时提供的参数的本地名称。所以功能应该是:

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

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

dateUS(today);

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

document.write(dateUS(today));

如果dateUS返回结果而不是自己编写结果,那么这是合适的。这可能是一种更好的定义方式,但不是你如何做到的。

答案 1 :(得分:0)

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

  1. 在函数范围之外创建的数据(全局变量)。
  2. 在函数中创建的数据。
  3. 作为参数传递给函数的数据。
  4. 因此,如果您有一个将日期对象转换为字符串的函数,您要么使用全局变量(#1)要么将日期对象作为参数传递(#3)。您通常希望执行后者,因为它更灵活,并且不需要您的函数了解其周围的代码,这意味着您可以在其他项目或代码中的其他位置使用它。 / p>

    例如,如果要添加两个数字,则可以编写此函数:

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

    你会这样称呼:add(5, 6);,它会返回11。

    现在,我们可以将它扩展到日期对象。

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

    此函数将返回date getDate方法返回的内容,但您需要更改该方法以适合您的作业。

    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
    

    使用参数的好处是我们可以创建任意数量的日期对象,我们的函数将适用于所有这些。