我在控制台中对此进行了测试:
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不返回任何内容时,它将返回未定义的默认值。