-1
var chapter = {
    num: 7,
    title: ‘Creating Functions’,
    getNum: function() { return num; }\\without this keyword
};

没有关键字 this 的输出是未定义的

var chapter = {
    num: 7,
    title: ‘Creating Functions’,
    getNum: function() { return this.num; }\\with this keyword
};

为什么需要这个关键字,请用简单的方式解释一下。我知道这是重复的问题,但我看到他们都从不满意。所以请......

还有一件事,这段代码实际上做了什么。

(function() {
    // Function body goes here.
})();

我知道它立即调用的函数,但我需要一些详细的解释。提前谢谢大家

4

2 回答 2

2

num是当前作用域中的变量 (由定义函数的位置决定)。num

this.num是当前上下文的属性 (由函数的调用方式决定)。num

立即调用的函数,但我需要一些详细的解释

JavaScript 中的作用域由函数决定。立即调用的函数会创建一个新的作用域,并用于避免向当前作用域添加额外的变量。

于 2013-01-30T11:45:36.780 回答
0

回答你问题的最后一部分:那个“技巧”被称为闭包。

首先:(...)()在第一组括号内创建一些东西,然后调用它的结果。如果我们用一个函数代替...,它将调用该函数。

有人这样做的原因是创建一个范围,允许人们在不污染全局范围的情况下定义各种事物(只需将变量放在var myVar = 1;某个位置即可将变量分配给全局范围。在闭包中,您可以自由地制作所有您想要的混乱,而不会将全局范围变成任何其他脚本的混乱。

于 2013-01-30T11:50:45.593 回答