为什么这个具有最简单构造函数的javascript对象未定义?

为什么这个具有最简单构造函数的javascript对象未定义?,javascript,Javascript,我在控制台中对此进行了测试: var toto = (function() {function toto() {}})(); toto chrome控制台中的结果是 undefined 为什么??我会像往常一样期待建造师: function toto() {} 我犯了什么语法错误?您忘了返回 返回值是分配给变量的值,如果没有返回语句,则返回的值是未定义的。如果运行此代码,我相信这将为您提供答案 var noname = (function() { function toto() {

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

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(立即调用的函数表达式),它在函数创建后立即创建并调用该函数。 您在其中放置的内容包含在该函数中。这是在ES5JavaScript中创建私有变量的最佳方法。与所有函数一样,您可以从IIFE返回内容并访问IIFE外部声明的变量,但从外部不访问IIFE内部的任何内容,这同样会创建一个私有范围。
因为你的IIFE没有返回任何内容,所以它会返回未定义的默认值。

你的IEFE调用不会返回任何内容。没有语法错误,如果有语法错误,它会出现在控制台中。你为什么要这样做?@Bergi我正在学习javascriptOOP@Bergi好的,谢谢,我没有放任何回执:)你可以放你的答案,我会记下来的。
(function(){})();