【问题标题】:Return a value from a function within a function [duplicate]从函数中的函数返回值[重复]
【发布时间】:2021-11-12 13:49:34
【问题描述】:

所以,我有一个函数用于迭代电子表格中的行。基于检查一些值,我需要返回一个值,如果没有,不应该返回。我不知道只有在函数(行)有返回值的特定情况下如何返回。

function GetOldAreaSize(ID, area_changed, change_doc, area_kha, sheetSource) {
  
  var data = sheetSource.getDataRange().getValues();
  data.forEach(function (row) {
    if (row[0] == ID) {
      var area_changed_old = row[4];
      var change_doc_old = row[2]+row[3];
      var area_kha_old = row[15];

      if (area_changed == area_changed_old) {
        if (change_doc == "MR1") {
          if (change_doc_old == "PDD1") {
            var old_area = parseFloat(area_kha_old);
            Logger.log(old_area+" - "+parseFloat(area_kha))
            return parseFloat(area_kha_old);
          }} else if (change_doc == "MR2") {
            if (change_doc_old == "MR1") {
              Logger.log(area_kha_old+" - "+parseFloat(area_kha))
              return parseFloat(area_kha_old);
          }} else if (change_doc == "MR3") {
            if (change_doc_old == "MR2") {
              Logger.log(area_kha_old+" - "+parseFloat(area_kha))
              return parseFloat(area_kha_old);
          }} else if (change_doc == "MR4") {
            if (change_doc_old == "MR3") {
              Logger.log(area_kha_old+" - "+parseFloat(area_kha))
              return parseFloat(area_kha_old);
          }} else if (change_doc == "MR5") {
            if (change_doc_old == "MR4") {
              return parseFloat(area_kha_old);
          }} else if (change_doc == "MR6") {
            if (change_doc_old == "MR5") {
              return parseFloat(area_kha_old);
          }}
          else {
            ;
          }
      }
  } else{
    ;
  }});
}

【问题讨论】:

  • return 回调中的 return 语句永远不会对任何内容产生任何影响,因为 .forEach() 不注意返回值。
  • 您不能从内部函数内部的外部函数返回。看来您需要使用filterreduce 而不是forEach

标签: javascript function google-apps-script lambda


【解决方案1】:

在 JavaScript 中嵌套函数时,不能从内部函数返回外部函数。

我建议使用for 循环而不是.forEach()

let data = sheetSource.getDataRange().getValues();
for(let row of data) {
   /* Your code */
}

【讨论】:

    猜你喜欢
    • 2015-05-25
    • 2021-07-02
    • 2020-08-26
    • 2011-04-18
    • 2011-04-19
    • 2020-02-20
    • 2018-07-04
    相关资源
    最近更新 更多