立即调用的函数是“未定义的”

时间:2013-07-31 04:47:30

标签: javascript

我有以下内容:

var catCreyz = function() { console.log('maaaow'); }.call()

当我测试它的类型时:

typeof catCreyz

返回的结果是:

  

未定义

为什么?

2 个答案:

答案 0 :(得分:4)

Function.prototype.call返回被调用函数返回的内容。你的函数什么都不返回

var catCreyz = function() { console.log('maaaow'); }.call()
//logs undefined
console.log(catCreyz);

var result = function() { return "foo"; }.call()
//logs foo
console.log(result);

var myFunc = function() { console.log('maaaow'); }
//logs the function
console.log(myFunc);

答案 1 :(得分:1)

调用执行函数,你在函数中缺少一个return语句,Javascript不会像其他语言一样返回最后一个表达式。您必须显式返回一个值,否则您将得到未定义。

如果你想要一个catCreyz的实例,那么从表达式中取出call()。