如果我从匿名立即调用的函数表达式中返回一个对象,它会去哪里?例如 foo 在这段代码中的位置....

(function(){
    var foo;
    return foo;
})();

这有什么有用的应用吗?

最佳答案

从您的自执行函数返回一个值而不将该返回值分配给结果变量只是一个无处可去的返回值,因此不会创建对函数中数据的新引用。所以一旦函数返回,数据就会被垃圾回收,就像没有 return 语句一样。所以这:

(function(){
    var foo;
    return foo;
})();

与从函数返回一个值并且不将返回值分配给任何东西没有什么不同。

您可以这样做来捕获返回值:
var result = (function(){
    var foo = "hello";
    return foo;
})();

工作演示:http://jsfiddle.net/jfriend00/t9wJL/

至于返回值的用处。如果将返回值分配给变量或将其用作其他函数的输入,这很有用,但如果不这样做,则什么也做不了。

10-05 20:19
查看更多