Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';定义这些对象之间的区别是什么?_Javascript - Fatal编程技术网

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;}()