在另一个函数内调用函数 - 未捕获的错误

时间:2016-02-03 02:08:07

标签: javascript variables trello

我不知道'参数'是否是正确的术语,但我试图在另一个函数中调用一个函数,我收到以下错误:

Uncaught ReferenceError: successMsg is not defined

我正在通过他们的API循环遍历Trello板,看起来像这样

var sportSuccess = function(successMsg) {
  console.log("sport");
    loopTrelloCards();
};

Trello.get('/lists/BOARDID/cards', sportSuccess, error);

我的loopTrelloCards函数看起来像

function loopTrelloCards() {
  for(i = 0; i < successMsg.length; i++) {
    var name = successMsg[i].name;
    var desc = successMsg[i].desc;
    var due = successMsg[i].due;
    var date = new Date(due);
    var day = addZeroToDate(date.getDate());
    var month = addZeroToDate(date.getMonth() + 1);
    var year = String(date.getFullYear());
    var eventDateShort = year + month + day;
    if (today < eventDateShort) {
      var year = year.substr(2);
      var eventDate = day + '.' + month + '.' + year;
      console.log(name + '  ' + desc + '  ' + eventDate);
    }
  }
}

当我将代码放在sportsSuccess函数中的函数内部时,它可以正常工作,但是当我在sportsSuccess中调用loopTrelloCards时,它会中断。

另外,如果我使用的术语(参数)是正确的,你可以告诉我吗?你会怎么称呼这个?

1 个答案:

答案 0 :(得分:1)

Javascript中的参数是函数“范围”的局部变量。因此,由于您没有将successMsg作为参数传递,因此无法从内部函数访问。

您的选择是:

  • successMsg作为参数传递给内部函数。
  • successMsg定义为全局变量(在函数之外)并在那里访问它。
  • 不使用内部函数并将逻辑放在main函数中。

引用w3schools

Function Arguments
Function arguments (parameters) work as local variables inside functions.