请解释这个Javascript教程

时间:2011-02-24 04:32:48

标签: javascript

我是个新手,我对这个教程感到困惑。我知道(至少我认为我知道)函数getDate和get Month以及getFullYear是由JavaScript确定的预设函数。

如果将新日期(2000,0,1)作为formatDate的参数提交,为什么本教程需要这些预设函数? getDate会以某种方式与作为参数提交的数字发生冲突吗?

在功能键盘中,我理解“数字”检查数字是否小于10,如果是,则添加零,但提交给功能键的参数是什么?如何检查数字?

您能否一步一步地带我(使用简单的语言)本教程...提前谢谢

function formatDate(date) {
  function pad(number) {
    if (number < 10)
      return "0" + number;
    else
      return number;
  }
  return pad(date.getDate()) + "/" + pad(date.getMonth() + 1) +
             "/" + date.getFullYear();
}
print(formatDate(new Date(2000, 0, 1)));

3 个答案:

答案 0 :(得分:6)

此功能可以格式化并打印日期。

打击垫功能是在小于10的数字前添加“0”(不是如你所说的那样加10)。

这允许您以dd / mm / yyyy格式打印日期。 例如。 2011年2月3日将打印为03/02/2011而不是2011年3月2日

在formatDate函数中,最后一行是返回键(.... “formatDate”函数中的“pad”函数获取每个日期部分并将其发送到填充函数以预先设置“0”以确保遵循mm / dd而不是可能发送单个数字变量 - 例如3/2 / 2011

function formatDate(date) { // date is passed here
  function pad(number) {    // note that this function is defined within the outer function
    if (number < 10)
      return "0" + number; // prepend a 0 if number is less than 10
    else
      return number; // if number is greater than 10, no prepending necessary
  }  // the pad function ends here 
  return pad(date.getDate()) + "/" + pad(date.getMonth() + 1) +
             "/" + date.getFullYear(); // note how the pad is used around the "date" and "month" only 
} // the formatDate function ends here
print(formatDate(new Date(2000, 0, 1)));

希望有助于澄清事情。

这一行:

 return pad(date.getDate()) + "/" + pad(date.getMonth() + 1) +
                 "/" + date.getFullYear();

转换为(假设日期为23/2/2011)

 return pad(23) + "/" + pad(1 + 1) +  "/" + 2011;

这调用pad(23) - 并且23被替换为pad函数中的“number”变量。无需更改,返回23。

pad(1 + 1)= pad(2) - 并且2被替换为pad函数中的“number”变量。它附加一个“0”并返回“02”

所以,最后的转换是

return 23 + "/" + 02 + "/" + 2011;

并最终打印“23/02/2011”。

答案 1 :(得分:2)

这是一个关于如何以DD / MM / YYYY格式显示日期的教程。它创建一个日期,然后将其提交给以该格式返回的函数formatDate,然后将其打印到屏幕上。

formatDate有一个名为“pad”的内部函数。这可以确保每个项目开头都有足够数量的零。例如,如果那天是2000年1月1日,那么程序员想要01/01/2000。 pad将零添加到月和日,因为它们都小于10.它向getMonth添加1,因为月份在Javascript日期对象中为零索引:0表示1月,1表示2月,等

getDategetMonthgetFullYearDate类的对象方法。如果你是面向对象编程的新手,我建议你先探索一下来理解对象。粗略地说,对象是一种数据类型,它还具有操作该数据的方法。 Date个对象具有getDategetMonthgetFullYear对象方法,用于返回日期的这些部分。

此代码很好,但是如果您尝试进行更复杂的日期解析,则可能需要查看date.js library

答案 2 :(得分:0)

最后一行说明了这一点:

print(formatDate(new Date(2000, 0, 1)));

它有括号,所以你需要向后读它:

(2000, 0, 1) // make a list of 3 numbers to pass to a function
Date(2000, 0, 1) // call the Date function
new Date(2000, 0, 1) // since Date is a builtin object, tell it that is is constructing a new object or you risk hard to find bugs
(new Date(2000, 0, 1)) // pass the new Date object to the formatDate function
print(formatDate(new Date(2000, 0, 1))); // pass the result of formatDate, a String object, to the print function

您会注意到formatDate函数永远不会看到这三个数字,因此它必须使用像getMonth这样的东西来解码部件。