'这个'在IIFE里面与本地范围相同?

时间:2012-08-28 00:13:16

标签: javascript iife

如果我有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}}相同?

2 个答案:

答案 0 :(得分:5)

不,他们是不同的。

var $a,然后$a是函数范围中的局部变量。

但是如果你使用this.$a,因为这是一个自执行函数,this在这种情况下是windowthis.$awindow.$a相同,所以你改为使用全局变量$a

答案 1 :(得分:5)

没有

thisMDN / this Operator描述的一些内容设定,但简而言之:

  • 全局对象,位于顶级范围
  • 执行obj 时,
  • obj.func(...)
  • obj,执行func.apply(obj, [...])func.call(obj, ...)时 或者全局对象,如果objnullundefined
  • 调用func.prototype
  • 时,原型为new func(...)的新对象
  • 事件目标,如果在elem.addEventListener('event', func, ...)
  • 上触发了eventelem

在较新的JavaScript中存在一些差异和补充,但这就是它。 thisfunction范围无关。