【问题标题】:Is there a way to end a function with another function in JavaScript?有没有办法用 JavaScript 中的另一个函数结束一个函数?
【发布时间】:2011-11-19 10:13:12
【问题描述】:

我希望有一个函数在调用特定函数之前检查条件是否为真。我的目标是在另一个函数中有一行代码(被调用的函数)。此函数应在执行任何其他代码之前运行。这是一些伪代码来说明我的意思:

function checkFunction(){
//checks if a condition is true if so end function, else continue function
} 
function aFunction(){
checkFunction();
//some code
}

我知道我可以编写一个包含返回的条件语句,但如果可能的话,我想保持这么短。

谢谢你们的时间。

【问题讨论】:

  • 把它包装在 try{}catch{} 中,如果你需要结束,只需执行类似 "undefined_var / undefined" ;p
  • 那么,究竟是什么问题?你有没有尝试过?
  • 追求可读性而不是紧凑性。你总是可以用工具来缩小你的代码(它们会做得更好)。

标签: javascript function terminate


【解决方案1】:

您可能想要一个类似assert 的函数,但反过来:

function stopIfTrue(x) {
    if(x === true) throw "stop function"; // can be any string
}

然后:

function aFunction(){
    stopIfTrue(something); // if 'something' is true an error will be thrown; function will exit
    //some code
}

【讨论】:

    【解决方案2】:

    您可以做的一个技巧是动态更改其他功能。所以

    function make_wrapped(before, after){
        return function(){
            if(before()) return;
            after.apply(this, arguments);
        }
    }
    
    //set aFunction to be the new function
    aFunction = make_wrapped(checkFunction, aFunction);
    

    编辑:我误读了这个问题。这可能比您需要的要复杂得多。

    【讨论】:

      【解决方案3】:

      我会这样做:

      function checkFunction(){
        return (condition);
      } 
      
      function aFunction(){
          if(!checkFunction()) return;
          //some code
      }
      

      【讨论】:

      • 这个方法会在什么条件下执行返回,真还是假?
      • @Felipe:当checkFunction() 返回的值等于false
      【解决方案4】:

      没有专为您想要的东西而设计的东西,无论如何它都接近于不好的做法。但是你可以通过写这样的东西来得到它非常简洁:

      function aFunction()
      {
         if (!checkFunction()) return;
         //some code
      }
      

      【讨论】:

      • 这会在什么条件下执行return?对还是错?
      • aFunction 会在checkFunction() 返回false 时立即返回。如果您希望它在checkFunction() 返回true 时立即返回,只需删除!
      • 它从我在元素上创建的属性中获取布尔值。像这样:<div locked="true">-content-</div> 会将属性值读取为字符串还是布尔值?我问的原因是因为它正在执行代码,无论它是真还是假。
      • 你知道吗,它返回的值是来自自定义属性的null。我的代码有问题。我正在使用getAttribute() 方法...等等。
      【解决方案5】:

      如果你想这样做:

      function aFunction()
      {
          if(checkFunction())
          {
              return;
          }
          //somecode
      } 
      

      在 aFunction() 中不使用 return,你可以这样做:

      function aFunction()
      {
          if(!checkFunction())
          {
              //somecode
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-08-15
        • 2019-09-23
        • 2021-06-05
        • 2020-06-05
        • 1970-01-01
        • 1970-01-01
        • 2020-10-21
        • 2021-06-10
        • 1970-01-01
        相关资源
        最近更新 更多