这些之间有什么区别?
var person = {
age: 25,
name: "David"
};
var person = (function() {
var name = "David", age = 25;
}());
我的问题是,(function(){}())
做了什么?
答案 0 :(得分:7)
(function(){}())
做什么?
这实质上创建了一个匿名函数,然后执行它。这方面的一个常见用途是限制全局变量。
例如,以下将有三个全局变量(var1
,var2
和var3
):
var var1 = "a", var2 = "b", var3 = "c";
如果将这些声明包装在匿名函数中,它们仍然可以作为匿名函数中的局部变量访问,但不会使全局命名空间变为云。例如:
(function() {
var var1 = "a", var2 = "b", var3 = "c";
console.log(var1); // interact with local variables
})(); // execute function.
这些之间有什么区别?
var person = {
age: 25,
name: "David"
};
如果此代码包含在函数中,则会创建名为person
的局部变量。否则,它会创建一个名为person
的全局变量。
var person = (function() {
var name = "David", age = 25;
}());
此代码创建并执行匿名函数,然后将该匿名函数的返回码分配给变量person
。由于匿名函数没有返回值,因此变量person
的值为undefined
。目前的这个陈述在功能上等同于var person;
,因为匿名函数没有副作用,也没有返回值。
答案 1 :(得分:4)
var person = (function() {
var name = "David", age = 25;
}());
person将为undefined
,因为该函数没有return
语句。
它只是一个自动执行的匿名函数,您可以将其映像如下。
function foo() {
var name = "David", age = 25;
}
var person = foo();
答案 2 :(得分:2)
它执行您刚刚创建的匿名函数。
这种技术很有用,因为它允许你在你的班级范围内成员。
如果您正在寻找一种做好课程和继承的好方法,请查看http://ejohn.org/blog/simple-javascript-inheritance/
我还建议您将类定义为AMD模块。