Javascript 什么';定义这些对象之间的区别是什么?
这两者有什么区别Javascript 什么';定义这些对象之间的区别是什么?,javascript,Javascript,这两者有什么区别 var person = { age: 25, name: "David" }; var person = (function() { var name = "David", age = 25; }()); 我的问题是,(function(){}())做什么?它执行您刚才创建的匿名函数 这种技术很有用,因为它允许您在类中定义成员的范围 如果您正在寻找一种处理类和继承的好方法,请看 我还建议将类定义为AMD模块。什么是(function(){}())做
var person = {
age: 25,
name: "David"
};
var person = (function() {
var name = "David", age = 25;
}());
我的问题是,
(function(){}())
做什么?它执行您刚才创建的匿名函数
这种技术很有用,因为它允许您在类中定义成员的范围
如果您正在寻找一种处理类和继承的好方法,请看
我还建议将类定义为AMD模块。什么是(function(){}())
做的?
var person = {
age: 25,
name: "David"
};
这实质上是创建一个匿名函数,然后执行它。一个常见的用途是限制全局变量
例如,以下将有三个全局变量(var1
、var2
、和var3
):
如果将这些声明包装在匿名函数中,它们仍然可以作为匿名函数中的局部变量进行访问,但不会对全局命名空间造成影响。例如:
(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代码>,因为匿名函数没有副作用,也没有返回值
var person = (function() {
var name = "David", age = 25;
}());
person将是未定义的,因为函数没有返回语句
这只是一个自动执行的匿名函数,您可以想象如下
function foo() {
var name = "David", age = 25;
}
var person = foo();
对我来说,这是一个非常有趣的话题。我发现这个网站可以让你的问题更清楚一些。你遗漏了“大卫”的一句话,我认为这两种说法做的事情完全不同,比较它们是没有意义的。第一个创建一个对象,第二个执行一个函数,将返回值(undefined
)分配给person
@FelixKling:这应该是可接受的答案。我希望在提交之前看到您的评论(或者更好地阅读问题),立即执行的函数与“类”有什么关系?“我同意,这对范围界定很有用,但我不明白你为什么要引入课程。”费利克斯·克林只是提到了问题的标题。他试图定义物体。。。不妨谈谈类。我不知道它如何与构造函数一起使用,也不知道它能带来什么好处。费利克斯·克林承认我对JS知之甚少。但对我来说,构造函数很像一个类定义。至少在Java类的意义上是这样的。当然,请原谅它的“类型”部分。想法?OP的示例不是构造函数,除非在调用函数时将代码更改为使用new
——在这种情况下,它仍然不会执行与对象文本相同的操作,因为在函数中创建带有var
的变量不会将它们作为属性添加到返回的对象中。+1用于提及undefined
变量值当构造函数未使用new
关键字时,表示对象文本和匿名函数中都有方法,即getName()。我仍然可以从任一声明中访问person.getName()。。那么这两个代码最终是否实现了相同的功能呢?非常彻底和简洁,谢谢@匿名-除非在匿名函数中以某种方式返回对象,否则不能使用person.getName()
,因此它们实际上并不相同。如果要从匿名函数版本中使用person.getName()
,可以使用以下命令:var person=(function(){this.getName=function(){return“Bob”};return this;}()代码>