【问题标题】:Javascript/Jquery-How to check if a function returns any value at all?Javascript/Jquery-如何检查函数是否返回任何值?
【发布时间】:2013-06-21 17:06:57
【问题描述】:

有没有办法检查函数是否返回任何值。 比如:

if(loop(value) --returns a value--) { 
    //do something
}

function loop(param) {
    if (param == 'string') {
        return 'anything';
    }
}

【问题讨论】:

    标签: javascript jquery function return


    【解决方案1】:

    不返回对象或原始类型的函数返回未定义。检查未定义:

    if(typeof loop(param) === 'undefined') {
        //do error stuff
    }
    

    【讨论】:

    • for other viewers do if( (typeof loop(param) ) === 'undefined') { //do error stuff } extra () important
    • if ( loop(param) === undefined ) {} // 像答案一样工作并且“更好”。
    • 如何区分没有返回任何内容的函数(例如:function a() {} var ret = a(); // typeof ret === "undefined")和显式返回未定义的函数(例如:function a() { return void 0; // Returns undefined explicitly } var ret = a(); // typeof ret === "undefined")?有没有办法(从调用方)知道一个函数是通过 return 语句而不是隐式返回的?谢谢
    【解决方案2】:

    没有return 的函数将返回undefined。你可以检查一下。

    不过,函数体中的return undefined 也会返回undefined(很明显)。

    【讨论】:

    • 如何从调用方区分这两种情况(隐式undefined返回和显式return undefined)?
    【解决方案3】:

    你可以这样做:

    if(loop(param) === undefined){}
    

    每次都可以,但有一个例外,如果您的函数返回undefined,它将进入循环。我的意思是,它返回一些东西,但它是未定义的......

    【讨论】:

      【解决方案4】:

      如果您想在函数返回的情况下对函数的输出执行某些操作,请先将其传递给一个变量,然后检查该变量的类型是否为 "undefined"


      演示

      testme("I'm a string");
      testme(5);
      
      function testme(value) {
        var result = loop(value);
        if(typeof result !== "undefined") { 
          console.log("\"" + value + "\" --> \"" + result + "\"");
        } else {
          console.warn(value + " --> " + value + " is not a string");
        }
      
        function loop(param) {
          if (typeof param === "string") {
            return "anything";
          }
        }
      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-04
        • 1970-01-01
        • 2020-10-07
        • 2011-12-03
        • 2011-05-22
        • 1970-01-01
        • 2021-03-06
        • 2011-03-13
        相关资源
        最近更新 更多