每次调用函数时,我都想打印 Next Day 的名称

Posted

技术标签:

【中文标题】每次调用函数时,我都想打印 Next Day 的名称【英文标题】:I want to print the name of Next Day every time I call my function 【发布时间】:2017-12-05 07:25:36 【问题描述】:

我需要创建一个名为 NextDay() 的 javascript 函数。 这个函数应该在控制台中打印我第二天的名字。

我创建了如下函数:

    //Function to Print the name of Next Day in Javascript
    var NextDay = (function () 
    counter = 0;
    var nextDay = function () 

        var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", 
                     "Friday", "Saturday"];
        var date = new Date();
        var dayNumber = date.getDay() + counter;
        if (dayNumber < 6) 
            dayNumber = dayNumber;
        
        else 
            dayNumber = (dayNumber % 6);
        
        var dayName = days[dayNumber];
        counter += 1;
        return dayName;
    ;

    return nextDay;
)();
NextDay();
NextDay();
NextDay();
NextDay();
NextDay();
NextDay();
NextDay();
NextDay();

我期望输出为:

星期六 周日 周一 周二 周三 周四 星期五 星期六

但我得到如下输出: 星期日 周一 周二 周三 周四 星期五 星期日 星期一

我相信我在这里遗漏了一些非常小的东西,因此我在这里跳过了一天。 请推荐

【问题讨论】:

【参考方案1】:

我不确定你的哪个数学有问题,但有一个更简单的方法:

var counter =(new Date).getDay();
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var nextDay = function () 
    var day=days[counter];
    counter = (counter+1)%7;
    return day;
;

【讨论】:

谢谢你的帮助,我试过你的,这也是跳过一天。 周六周一周二周三周四周五周日周一周二周三 和我想念的一样,【参考方案2】:

生成器功能可能很方便。

function* nextDay() 
  let i = 0,
      days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
  while (i < 7) 
    yield console.log(days[i++]);
    if (i == 7) i = 0;
  


let gen = nextDay();
gen.next();
gen.next();
gen.next();
gen.next();
gen.next();
gen.next();
gen.next();
gen.next();
gen.next();

【讨论】:

不会产生天数[i++] 更有用吗? @Jonasw 谢谢 (:

以上是关于每次调用函数时,我都想打印 Next Day 的名称的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 引用错误函数

在“Zapier 代码”操作中触发多个 webhook 调用

如何清除子函数中的持久变量

Python时间延迟

2018-06-20-Python全栈开发day19-生成器函数详解

每次打开它时我都想要新的(新鲜的)颤动页面小部件