javascript与关键字this混淆

javascript与关键字this混淆,javascript,function,this,keyword,Javascript,Function,This,Keyword,如果没有关键字this,则输出未定义 var chapter = { num: 7, title: ‘Creating Functions’, getNum: function() { return num; }\\without this keyword }; 为什么需要这个关键词呢?请简单解释一下。这是一个重复的问题,我知道,但我看到他们都不满意。所以请 还有一件事,这段代码实际上是做什么的 var chapter = { num: 7, title

如果没有关键字this,则输出未定义

var chapter = {
    num: 7,
    title: ‘Creating Functions’,
    getNum: function() { return num; }\\without this keyword
};
为什么需要这个关键词呢?请简单解释一下。这是一个重复的问题,我知道,但我看到他们都不满意。所以请

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

var chapter = {
    num: 7,
    title: ‘Creating Functions’,
    getNum: function() { return this.num; }\\with this keyword
};
我知道一点,它立即调用的功能,但我需要一些详细的解释。提前感谢大家

num
是当前范围内的变量
num
(由函数的定义位置决定)

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

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


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

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

首先:
(…)()
在第一组括号内创建一些内容,然后调用其结果。如果我们将一个函数替换为
,它将调用该函数


有人这样做的原因是为了创建一个范围,允许人们定义各种各样的事物,而不污染全球范围(只需将
var myVar=1;
放在某个地方,就可以将变量分配给全局范围。在闭包中,您可以随意制造所有您想要的混乱,而无需将全局范围变成任何其他脚本的混乱。

这告诉它访问对象中的变量,而不是全局变量。即,属于第obje章的变量阅读一些文档:。这可能是一种语言设计选择,可以隐式地将其设置为
this.num
,否则它将是一个
ReferenceError
,但这将使类型的调试更加困难。不,函数不一定是闭包。“技巧”函数立即被调用,这会创建一个新的作用域。有些人会调用它。函数是否用作闭包并不重要。
(function() {
    // Function body goes here.
})();