我在控制台中对此进行了测试:
var toto = (function() {function toto() {}})();
toto
Chrome控制台的结果是
undefined
为什么?我会像往常一样期望构造函数:
function toto() {}
我做了什么语法错误?
答案 0 :(得分:2)
您忘了返回。
var toto = (function() {return function toto() {}})();
返回值是分配给变量的值,如果没有返回语句,则返回的值为 undefined 。
答案 1 :(得分:2)
如果您运行此代码,我相信这会给您答案。
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中创建私有变量的最佳方法。像所有函数一样,您可以从IIFE返回事物并访问在IIFE外部声明的变量,但不会从外部返回任何内容,同样它会创建一个私有范围。 当您的IIFE返回任何内容时,它将返回默认值undefined。