javascript:确定函数返回类型

时间:2012-02-08 21:24:24

标签: javascript

在javascript中有没有办法确定函数的返回类型(如果有的话)?

示例:

function doSomething(){
   return true;
}

返回的类型是boolean。

示例2:

function doSomething2(x){
    if(x=="a") return 1;//number
    else return "bad x"; //string
}

6 个答案:

答案 0 :(得分:7)

这不是Haskell - Javascript函数可以返回任何内容。

答案 1 :(得分:6)

检查类型:

var x = typeof doSomething2('a');

if (x == "string")
    alert("string")
else if (x == "number")
    alert("number");
else if (x == "undefined")
    alert('nothing returned');
else if (x == "boolean")
    alert("boolean");
else
    alert(x);

答案 2 :(得分:4)

不,您将不得不运行该函数并检查结果值的类型。

答案 3 :(得分:1)

    function dosomething()
    {
        return true;
    }
    var myfunc=dosomething();
    if(typeof myfunc=="boolean") alert('It is '+typeof myfunc);

您可以使用

if(typeof myfunc=="boolean") or if(typeof myfunc=="number") or if(typeof myfunc=="string") 

if(typeof myfunc=="object") or if(typeof myfunc=="undefined") to determine the type.

答案 4 :(得分:1)

您可以将其用作要返回的函数

const determineFunc = (param) => typeof param;

console.log("logs==>", determineFunc(true));

答案 5 :(得分:0)

如果函数正在返回对象,并且我们在返回的值上应用了 typeof ,那么我们将获得作为泛型类型的对象的值,但我们可能不知道它是什么特定对象, 要获得特定对象,我尝试过的是 constructor.name ,它给出了要返回的特定对象。此外,我们还可以选择 Object.prototype.toString.call(值)

例如

const li = document.createElement('li');
console.log(typeof li);//object
console.log(li.constructor.name);//HTMLLIElement
console.log(Object.prototype.toString.call(li));//[object HTMLLIElement]

所以我们可以看到object只是所有对象的通用类型。 HTMLLIElement是上述函数返回的特定对象。