在javascript中有没有办法确定函数的返回类型(如果有的话)?
示例:
function doSomething(){
return true;
}
返回的类型是boolean。
示例2:
function doSomething2(x){
if(x=="a") return 1;//number
else return "bad x"; //string
}
答案 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
是上述函数返回的特定对象。