如果我有IIFE,这是指本地范围吗?
(function(){
var $a;
$a = Su.$a
// this.$a = Su.$a; // can I replace with this
})();
我问,因为我需要{II}在我的IIFE中提供Su.$a
。
但我不想致电Su.$a
,我想致电$a
。
说this.$a
与将var $a
变成顶级作用域时的{{1}}相同?
答案 0 :(得分:5)
不,他们是不同的。
var $a
,然后$a
是函数范围中的局部变量。
但是如果你使用this.$a
,因为这是一个自执行函数,this
在这种情况下是window
,this.$a
与window.$a
相同,所以你改为使用全局变量$a
。
答案 1 :(得分:5)
没有
this
由MDN / this
Operator描述的一些内容设定,但简而言之:
obj
时,obj.func(...)
obj
,执行func.apply(obj, [...])
或func.call(obj, ...)
时
或者全局对象,如果obj
是null
或undefined
func.prototype
new func(...)
的新对象
elem.addEventListener('event', func, ...)
event
和elem
在较新的JavaScript中存在一些差异和补充,但这就是它。 this
与function
范围无关。