定义这些对象有什么区别?

got*_*ops 3 javascript

这些有什么区别?

var person = {
    age: 25,
    name: "David"
};

var person = (function() {
    var name = "David", age = 25;
}());
Run Code Online (Sandbox Code Playgroud)

我的问题确实是,(function(){}())做了什么?

jef*_*eff 7

怎么(function(){}())办?

这实际上创建了一个匿名函数,然后执行它.这方面的一个常见用途是限制全局变量.

例如,下面会有三个全局变量(var1,var2,和var3):

var var1 = "a", var2 = "b", var3 = "c";
Run Code Online (Sandbox Code Playgroud)

如果您将这些声明包装在匿名函数中,它们仍然可以作为匿名函数中的局部变量访问,但不会使全局命名空间变为云.例如:

(function() {
    var var1 = "a", var2 = "b", var3 = "c";
    console.log(var1); // interact with local variables
})(); // execute function.
Run Code Online (Sandbox Code Playgroud)

这些有什么区别?

var person = {
    age: 25,
    name: "David"
};
Run Code Online (Sandbox Code Playgroud)

如果此代码包含在函数中,则会创建一个名为的局部变量person.否则,它会创建一个名为的全局变量person.

var person = (function() {
    var name = "David", age = 25;
}());
Run Code Online (Sandbox Code Playgroud)

此代码创建并执行匿名函数,然后将该匿名函数的返回代码分配给变量person.由于匿名函数没有返回值,因此该变量person的值为undefined.目前的这个陈述在功能上等同于var person;,因为匿名函数没有副作用,也没有返回值.