javascript与关键字混淆了

时间:2013-01-30 11:43:43

标签: javascript function this keyword

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

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

还有一件事就是这个代码实际上做了什么。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

  

立即调用函数但我需要一些细节解释

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

答案 1 :(得分:0)

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

首先:(...)()在第一组括号内创建一些内容然后调用其结果。如果我们将函数放在...的位置,它将调用该函数。

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