Javascript/Jquery-如何检查函数是不是返回任何值?

Posted

技术标签:

【中文标题】Javascript/Jquery-如何检查函数是不是返回任何值?【英文标题】: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';
    

【问题讨论】:

【参考方案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";
    
  

【讨论】:

以上是关于Javascript/Jquery-如何检查函数是不是返回任何值?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript/jQuery - 如何检查字符串是不是包含特定单词

如何找出使用 javascript/jquery 调用函数的次数?

如何从 .cs 文件 (C#) 调用 JavaScript/jQuery 函数

如何在 JavaScript / jQuery 中合并两个函数?

如何限制javascript / jquery中函数的范围[重复]

如何防止按键重复被触发 - JavaScript/jQuery