我在控制台中对此进行了测试:

var toto = (function() {function toto() {}})();
toto

chrome控制台的结果是
undefined

为什么呢我会像往常一样期望构造函数:
function toto() {}

我犯了什么语法错误?

最佳答案

如果您运行此代码,我相信这会给您答案。

var noname = (function() {
    function toto() {
         console.log('running toto');
         return 'returning toto';
    }
    console.log(toto());
    return 'no name';
})();
console.log(noname);

更长的答案如下。
(function(){})();

它创建它称为IIFE(立即调用函数表达式),并在创建函数后立即调用它。
您在其中放置的内容都包含在该功能中。这是在ES5 Javascript中创建私有(private)变量的最佳方法。像所有函数一样,您可以从IIFE返回内容并访问在IIFE外部声明的变量,但不能从外部访问任何变量,这再次创建了私有(private)作用域。
当您的IIFE不返回任何内容时,它将返回未定义的默认值。

10-08 08:37