如果我有 IIFE,这是否指的是本地范围?
(function(){
var $a;
$a = Su.$a
// this.$a = Su.$a; // can I replace with this
})();
我问是因为我需要Su.$a
在我的 IIFE 中随处可用。
但我不想打电话Su.$a
,我想打电话$a
。
和当 var 它是顶级作用域时说this.$a
的一样吗?var $a
如果我有 IIFE,这是否指的是本地范围?
(function(){
var $a;
$a = Su.$a
// this.$a = Su.$a; // can I replace with this
})();
我问是因为我需要Su.$a
在我的 IIFE 中随处可用。
但我不想打电话Su.$a
,我想打电话$a
。
和当 var 它是顶级作用域时说this.$a
的一样吗?var $a
不。
this
由MDN / this
Operator描述的一些东西设置,但简而言之:
obj
, 执行时obj.func(...)
obj
, 当执行func.apply(obj, [...])
orfunc.call(obj, ...)
obj
is null
orundefined
func.prototype
调用时带有原型的新对象new func(...)
elem.addEventListener('event', func, ...)
和event
被触发elem
较新的 JavaScript 中存在一些差异和添加,但仅此而已。 this
与范围无关function
。
不,它们是不同的。
var $a
,则$a
是函数范围内的局部变量。
但是如果你使用this.$a
,因为这是一个自执行函数,this
在window
这种情况下,this.$a
与 相同window.$a
,所以你使用的是全局变量$a
。