为什么此代码中的if语句后Java脚本循环未运行?

时间:2018-10-14 07:42:46

标签: javascript loops if-statement

我想打印2014年至2050年之间的年份,其中日期为1,日期为0(星期日),月份为0(一月),这是代码,我做错了吗?

//Write a JavaScript program to find 1st January is being a Sunday between 2014 and 2050.

for (var year = 2014; year <=2050; year++){
    var today = new Date();
    var month =  today.getMonth();
    var date  =  today.getDate();
    var year1  =  today.getFullYear();
    var day   =  today.getDay();
    // console.log(year);
if (date === 1 && day === 0 && month == 0){
    console.log(year);
}    else{
    alert("error");
}; break

};

3 个答案:

答案 0 :(得分:1)

我已经审查了您的代码,这是对您的代码的分析

  1. 以下代码行 }; break 第一次迭代后退出循环,因此不是必需的。
  2. 您的代码行 new Date(); 一律返回今天的日期。
  3. 因此,您需要这样称呼它: new Date(year, 0, 1); 因此,这将为您提供循环中每年的1月1日。

因此,您只需要使用以下If条件验证是否为星期日:

let date = new Date(year, 0, 1);
// checks if 1st Jan for the specific year is === 0 (sunday)
if ( date.getDay() === 0 ) {

这是最终的工作代码:

//Write a JavaScript program to find 1st January is being a Sunday between 2014 and 2050.
var year;
for (year = 2014; year <=2050; year++){
  let date = new Date(year, 0, 1);
// checks if 1st Jan for the specific year is === 0 (sunday)
if ( date.getDay() === 0 ) {
    console.log(year);
} else{
    // console.log("error");
};

};

参考文献: 语法:new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);

引用:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

答案 1 :(得分:0)

您必须在每次迭代后创建一个new Date(year, 0, 1),然后检查是否为星期日

new Date(year, 0, 1)

  • year将提供变量
  • 0代表一月的索引
  • 1代表一月的1 st

    var date;
    for (var year = 2014; year <= 2050; year++) {
      date = new Date(year, 0, 1);
      if (date.getDay() === 0) console.log(year);
    };

  • 答案 2 :(得分:-1)

    这可能有帮助。

    for (var year = 2014; year <= 2050; year++) {
      var d = new Date(year, 0, 1);
      if (d.getDay() === 0){
        console.log(year);
      }
    }