这个自执行匿名函数和这个普通函数调用有什么区别?

Jwa*_*622 1 javascript

这有什么区别:

(function() {
    var Person = {
        sayHello: function() {
            alert('Hello World');
        }
    }

    Person.sayHello();
})();
Run Code Online (Sandbox Code Playgroud)

还有这个:

var Person = {
    sayHello: function() {
        alert('Hello World');
    }
}

Person.sayHello();
Run Code Online (Sandbox Code Playgroud)

除了后者创建一个公共函数,前者是一种创建一种私有函数的方法(你不能在括号外引用Person ...有什么区别?

Que*_*tin 8

第一个不会Person在当前作用域周围留下一个名为float 的变量(因为当IIFE完成执行时没有对它的引用),也不会覆盖Person该作用域中调用的任何其他变量.

(第二个缺少一个,}但我认为这是问题中的拼写错误).