1

这 2 个 JavaScript 代码片段是否等效?

jQuery(document).ready(function() {
    (function(){
        return 'something';
    })();
});

还有这个

jQuery(document).ready(function() {
  return (function() {
    return "something";
  })();
});

我在尝试咖啡。将上面的第一个代码转换为 coffescript 并将其转换回 JS 给出了第二个片段。所以,我想知道它们是否完全相同。不是从与闭包相关的函数中返回函数吗?

4

2 回答 2

2

他们会是一样的,是的。除了第二个将使用 1 个更多的堆栈内存单元。

于 2012-09-26T21:09:54.660 回答
1

这取决于.ready方法是否使用其回调的返回值。如果是这样,那么例子就不同了。如果返回值被忽略,那么它是相同的。

如果您停下来想一想,您可以“简化”立即调用的函数表达式。这样做会将第一个示例变为

jQuery(document).ready(function() {
    'something';
});

第二个进入

jQuery(document).ready(function() {
    return 'something';
});
于 2012-09-26T21:27:07.317 回答