【问题标题】:return true, breaks code in javascript返回 true,在 javascript 中破坏代码
【发布时间】:2012-08-09 18:25:12
【问题描述】:

有以下代码:

function test(x) {
   if(x=='a') return false;
   return true;
}

if(y ==x) {
    return test('a');
    group['ids']= inputs.val();
    console.log(group);
}

为什么return true 只是通过不继续超出return 来破坏我的代码?

注意:我希望return test() 的答案控制它是否应该继续使用代码或不

更新

我已经做了类似的事情:

var response = test('b');
if (response==false) return false;
... more code here ...

但我想避免每次调用该函数时都必须这样做

【问题讨论】:

  • 因为这就是 return 的作用。
  • 你的意思是破坏你的代码?该行的“return true”将意味着它不会继续该代码的其余部分。
  • return 语句给出从函数返回的值。该函数的执行应该在此时停止,所以我不确定问题是什么。你的代码究竟是如何中断的?
  • 顺便说一句,这不是语法错误,return 语句立即将函数的控制/流返回给调用模块。根据编程语言的概念,它的行为是正确的。你必须重构你的代码来实现你想要的输出。
  • 我认为关于谁做的返回值不是“return test()”给你的值是“test()”,return总是存在当前函数并返回提供的值

标签: javascript jquery return


【解决方案1】:

因为这就是 return 在几乎每一种编程语言中所做的:它

  1. 退出函数并
  2. 返回一个值

如果需要执行其他代码,放在return语句之前。

编辑:我看到了你的编辑,但它并没有改变return 在那个(和每个)上下文中的本质。它将继续停止当前范围的流动,返回最近的具有值的更高范围(在您的情况下,为真或假)。

【讨论】:

    【解决方案2】:

    关键字return,顾名思义,将程序流控制返回到调用函数,并可选择设置函数的返回值。

    这在所有类 C 语言中都以相同的方式工作。

    您可能想要做的是类似 Delphi 的方法,其中关键字 Result 的工作方式不同 - 它只是设置函数终止时将使用的返回值,但不会立即终止函数。

    function() {
      var result = someDefaultValue;
    
      if (someCondition)
        result = otherValue;
    
      if (otherCondition)
        result = yetAnotherValue;
    
      return result;
    }
    

    【讨论】:

      【解决方案3】:

      尝试将 return 放在最后,因为 return true 会中断执行,之后不会执行任何操作

      【讨论】:

      • 这个答案没有什么用处
      【解决方案4】:

      当 return 语句执行时,当前函数的执行结束,程序的控制权返回到调用该函数的上下文。 return 语句之后的任何内容都不会被执行。

      【讨论】:

      • 好的,我现在明白了......但这会让我的代码一团糟:D
      • 这会如何弄乱你的代码?虽然语言语法允许您做您正在做的事情,但实际上这样做是错误的。退货后发表任何声明绝对没有意义。你的代码被严重破坏了。
      • @w0rldart - 你仍然可以在这些条件下编写干净的代码,你的代码目前是一团糟,因为你写的是function test(x) { if(x=='a') { return false; } return true; } 而不是function test(x) { return x !== 'a'; }
      【解决方案5】:

      当解释器到达该关键字时,return 关键字导致函数结束('return'),并且在 return 语句之后(在同一函数中)不再继续处理任何内容。

      你可以重写你所拥有的:

      group['ids']= inputs.val();
      console.log(group);
      return true;
      

      【讨论】:

        【解决方案6】:

        我通常会找出哪些场景是坏/错误和return false;,然后继续寻找正确的代码。

        function Testmcdooder (test) {
            if (test === false) {
                // just exit up here
                return false;            
            }
        
            // now all of this code will run only if we're fine
            group['ids']= inputs.val();
            console.log(group);
        }
        

        【讨论】:

          【解决方案7】:

          函数中存在return 语句。我认为你宁愿想要一个if 声明:

          if (y == x) {
            if (test('a')) {
              group['ids']= inputs.val();
              console.log(group);
            }
          }
          

          如果您还想在确定其他语句是否应该运行后返回值:

          if (y == x) {
            if (test('a')) {
              group['ids']= inputs.val();
              console.log(group);
              return true;
            } else {
              return false;
            }
          }
          

          或者:

          if (y == x) {
            var cond = test('a');
            if (cond) {
              group['ids']= inputs.val();
              console.log(group);
            }
            return cond;
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-08-03
            • 1970-01-01
            • 1970-01-01
            • 2021-10-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多