javascript与关键字this混淆
如果没有关键字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
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.
})();