为什么传入参数在一个地方工作而在另一个地方不工作?

时间:2016-03-04 22:42:09

标签: javascript momentjs

我有一个关于在Javascript中传递参数的问题,特别是作为要解释的moment.js的值。

我有这个功能:function showAll(howlate)

我想将该howlate参数传递给函数中的两个位置 所以function showAll('oneWeekAgo')就是这样的。

所以,这有效:

$.each(timesheets, function(i, timesheet) {
    if (moment(timesheet.EndDate).isBefore(oneWeekAgo)) {
      $("#demo").append('<span class="' + howlate + '">' + timesheet.UserName + '. </span><br>');
    }
  });

但这失败了,我试图将howlate传递给moment.js代码:

$.each(timesheets, function(i, timesheet) {
    if (moment(timesheet.EndDate).isBefore(howlate)) {
      $("#demo").append('<span class="' + howlate + '">' + timesheet.UserName + '. </span><br>');
    }
  })
isBefore中的

,一个WeekAgo是一个var,表示一个moment.js值,var oneWeekAgo = moment().subtract(7, 'days');

是否有一些我不知道或理解的语法将参数传递给某些Javascript并让它被读取?

或者我是否尝试做太多,将参数替换为由变量值替换的变量?

我试图弄清楚我是否犯了语法错误,或者试图做一些无法完成的事情。

2 个答案:

答案 0 :(得分:2)

问题是,当您调用oneWeekAgo时,您引用showAll,因此它传递的是字符串,而不是oneWeekAgo变量的值。使用

showAll(oneWeekAgo);

答案 1 :(得分:1)

我猜你的 howLate 变量没有指向有效的moment()对象。

根据moment docs

  

您可以使用#isValid时刻检查Moment是否认为日期无效。您可以使用#parsingFlags来检查#isValid使用的指标,它会返回一个对象。

您可以通过调用

来检查片刻是否有效
moment().isValid();